Cau este moc php neumim. Zkouše jsem si udelat script, ktery by mel uploadovat soubory pres ftp na webzdarma .
Script se vypise jako uspesny ale na ftp se zadne soubory neobjevi.
Nevíte kde je chyba ? (heslo a uzivatele zadavam urcite spravne :)
$file=$_FILES["soubor"]["name"];
$ok=$_POST["ok"];
$soubor = ($_FILES["soubor"]["tmp_name"]);
if($ok=="Upload")
{
$ftp_server= "xxxx.wz.cz";
$ftp_acc = "xxxxx.wz.cz";
$ftp_pass = "---------";
$fp=fopen($soubor, "r");
$connect_ftp= ftp_connect($ftp_server);
$ftp_login=ftp_login($connect_ftp,$ftp_acc,$ftp_pass);
if (ftp_fput($connect_ftp,$file,$fp,FTP_BINARY)){ echo "soubor $file2 byl uspesne nahran";}
ftp_close($connect_ftp);
fclose($fp);
}
////
<FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="soubor" SIZE="40"><br>
Nove jmeno souboru : (bez mezer)<br>
<INPUT TYPE="text" name="new" SIZE="40"><br>
<INPUT TYPE="submit" NAME="ok" VALUE="Upload">
</FORM>
Když už používáme podmínky, tak je lepší je využít všude.
if ($connect_ftp) { // spojeno } else { // nespojeno }
if ($ftp_login) { // prihlasen } else { // neprihlasen }
Protože se může stát, že to selže už někde v tomto kroku.
A důležitá otázka. Kam ten soubor chceš uploadnout?
Pokud to chceš uploadnout na calvin.wz.cz (na stejné místo jako je skript), pak je použití FTP naprosto zbytečné, protože to zdržuje a zbytečně plýtváš prostředky. Na toto se používá funkce move_uploaded_file().
Použít FTP má smysl pouze, pokud chceš soubor nahrát na jinou adresu než je skript.
Ať to procházím, jak to procházím, tak chybu nevidím. Než ale otevírát soubor lokálně a potom posílat data jako proud, mi přijde lepší rovnou použít funkce ftp_put(), která přímo kopíruje soubory (http://cz.php.net/manual/en/function.ftp-put.php). Prakticky mě napadají jen tři možnosti:
a) Zkopírovaný kód není celý a chyba je v tom odmazaném zbytku (usoudil jsem to z faktu, že ve výpise se vyskytuje neinicializovaná proměnná $file2)
b) Je omezen error_reporting a některá chyba (např. v připojení) neukončí běh skriptu.
c) Jsem slepej a chybu nevidím.
Tomík: Existují dvě dobré situace, kdy se vyplatí použít ftp přenos ke stejné doméně, jako se nachází skript:
1) Bezpečnost pro spouštění skriptů. Lze FTP účtu nastavit takový kořenový adresář, kde je například zakázané spouštění/parsování skriptů apod.. (nehrozí ovlivnění existující aplikace podstrčenými skripty atp.).
2) Nemusíš řešit problém s přístupovými právy souboru (samozřejmě záleží na nastavení, pod jakým uid běží phpserver, jaké uid má uživatel po připojení k ftp atp). Ale už jsem se i s takovýmito problémy setkal.
Zmíněné příklady se netýkají konkrétně wz.cz. Třeba první situace na wz.cz nikdy nenastane (protože zřejmě nikdo nedostane k jedné doméně druhý ftp účet).
Tak neumim si to vysvetlit ale tedka uz to funguje jak má.
ta promena $file2 je naky preklep pri upravovani ma to byt $file.
Kazdopadne dik za snahu a sry za cas :d