Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
Dobrý den,
pokouším se zprovoznit upload souborů pomocí php scriptu, ale nějak mi to nefunguje. Mám tento script. <?php if(isset($_POST['upload'])){ $nahrat = move_uploaded_file($_FILES["soubor"]["tmp_name"], $_FILES["soubor"]["name"]); if($nahrat){echo 'Soubor byl úspěšně uložen.';}else{echo 'Soubor se nepodařilo uložit.';} } ?> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="soubor"> <input type="submit" name="upload" value="Nahrát soubor na server"> </form> Pokaždé mi to vypíše, že se se soubor nepodařilo uložit. Ve složce, ve které mám uložený script mám nastavena práva na 777 a nenapadá mě nějak čím jiným by mohla být nefunkčnost scriptu způsobena. Děkuji. |
||
Rfilip Profil |
Zkus na začátek přídat
error_reporting(-1); ini_set("display_errors", 1); |
||
David1256 Profil |
#3 · Zasláno: 10. 6. 2012, 18:30:00
Rfilip:
Nevypíše se nic. |
||
Rfilip Profil |
#4 · Zasláno: 10. 6. 2012, 18:50:31
Celé je to nějaké divné :(. Dle documentace $_FILES["soubor"]["tmp_name"] tedy není validním nahraným souborem i když tu proměnou nastavuje sám server...
Zkuz sem hodit výpis: print_r($_FILES); |
||
David1256 Profil |
#5 · Zasláno: 10. 6. 2012, 18:54:18
Vypíše toto:
Array ( [soubor] => Array ( [name] => sipkap.png [type] => [tmp_name] => [error] => 6 [size] => 0 ) ) |
||
Jan Tvrdík Profil |
#6 · Zasláno: 10. 6. 2012, 18:56:46
David1256:
V php.ini je špatně nastavená hodnota upload_tmp_dir. Viz http://php.net/manual/en/features.file-upload.errors.php. |
||
David1256 Profil |
#7 · Zasláno: 10. 6. 2012, 19:07:31
A na co ji mam změnit, respektive pomocí jakého příkazu ji změním?
|
||
Rfilip Profil |
#8 · Zasláno: 10. 6. 2012, 19:17:40
Stránky máš kde?
|
||
David1256 Profil |
Myslíš u jakého hostingu nebo adresu nebo jak?
Jinak zjistil jsem, že jde změnit upload_tmp_dir pomocí tohoto příkazu. ini_set('upload_tmp_dir', 'docasny'); |
||
Davex Profil |
David1256:
„Myslíš u jakého hostingu nebo adresu nebo jak?“ Pokud to máš na hostingu, tak nebudeš mít přístup k souboru php.ini a nemůžeš to upravit. „Jinak zjistil jsem, že jde změnit upload_tmp_dir pomocí tohoto příkazu.“ Pomocí ini_set() to změnit nejde, protože soubor se nahrává před spuštěním PHP skriptu. Dočasný adresář tedy musí být znám předtím. Buďto nastavením volby upload_tmp_dir v php.ini nebo jinak, ale tam záleží na verzi PHP a způsobu spouštění (Apache modul nebo FastCGI).
|
||
David1256 Profil |
Takže když to udělám tímto zápisem v php.ini
upload_tmp_dir = /docasny mělo by to fungovat? Ono to totiž ani takhle nefunguje. Jde to tedy nějak vyřešit?
|
||
Davex Profil |
#12 · Zasláno: 10. 6. 2012, 19:58:12
Pokud provozuješ Apache na vlastním počítači ve Windows, tak musíš vytvořit pracovní adresář na stejném disku odkud se spouští (tuším, že na jiném disku s tím byly problémy) a ve správném souboru php.ini nastavit celou cestu, např.
upload_tmp_dir = "c:\docasny" . Po změně se nesmí zapomenout na restart Apache.
|
||
David1256 Profil |
Já mám ty stránky ale na hostingu, takže tam to nezměním ani pomocí php.ini ani pomocí .htacces? Je to tedy zakázané na od provozovatele hostingu?
|
||
Rfilip Profil |
#14 · Zasláno: 10. 6. 2012, 20:15:06
pomocí .htaccess to nezměníš a k php.ini na hostingu se vetšinou nedostaneš.
Že by upload_tmp_dir nebyl nastavený, o tom dost pochybuju,protože to by vůbec nefungovaly uploady- což se mi zdá trochu divné..
Jen pro jistotu v phpinfo() najdi řádek upload_tmp_dir - jaká tam je hodnota?
|
||
David1256 Profil |
#15 · Zasláno: 10. 6. 2012, 20:21:10
hodnota je "no value"
|
||
Rfilip Profil |
#16 · Zasláno: 10. 6. 2012, 20:32:13
Tady pomůže dotaz na support hostingu (vetšinou nějaké forum), jestli proměnné
tupload_tmp_dir můžou dát nějakou hodnotu.
Pravděpodobně nebudeš první kdo má podobný dotaz. Tady ti už těžko můžeme nějak pomoci |
||
David1256 Profil |
#17 · Zasláno: 10. 6. 2012, 20:32:38
Tak už jsem přišel na příčinu. Dohledal jsem člověka, který je zodpovědný na daném serveru za hosting a ten mi prozradil, že je schválně upload zakázán kvůli útoku hackerů. Díky za všechny rady, bez vás bych se k odpovědi nedopracoval.
|
||
Časová prodleva: 12 let
|
0