Autor | Zpráva | ||
---|---|---|---|
Anonym Profil * |
#1 · Zasláno: 5. 11. 2009, 12:31:03
Ahoj, zkouším načíst soubor pomocí funkce file_get_contents, ale naskočí mi warning [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in
if(file_get_contents("http://example.com/files/".$jmeno_souboru)) { echo "Soubor existuje"; } else { echo "Soubor neexistuje"; } Jak je to možné? Soubor na dané URL existuje. |
||
MCKAY Profil |
#2 · Zasláno: 5. 11. 2009, 12:37:25
Možná je zakázána funkce file_get_contents. Pokud vím, tak třeba php5.cz ji zakázanou má.
|
||
Anonym Profil * |
#3 · Zasláno: 5. 11. 2009, 12:40:43
Zvláštní. Takhle to funguje:
if (file_get_contents("./files/$jmeno_souboru")) |
||
Anonym Profil * |
#4 · Zasláno: 5. 11. 2009, 12:42:43
teda takhle:
if(file_get_contents("./files/".$jmeno_souboru)) |
||
Shulík Profil |
#5 · Zasláno: 5. 11. 2009, 12:52:28 · Upravil/a: Shulík
Spíš bych to tipl na zakázanou konfigurační direktivu url_fopen.
Původní funkce vysílala HTTP požadavek na server example.com, zatímco ta druhá žádný HTTP požadavek neotevírá. |
||
Anonym Profil * |
#6 · Zasláno: 5. 11. 2009, 13:04:54
Tak vypadá to, že to funguje, ale i přesto se mi zobrazují warningy...
if(file_get_contents("./files/".$jmeno_souboru)) { echo "Soubor existuje"; } To funguje bez warningů. else { echo "Soubor neexistuje"; } Taky se hláška vypíše, ale už s warningy: file_get_contents() [function.file-get-contents]: Unable to access ./files/dokument.txt in... a failed to open stream: No such file or directory in... |
||
nightfish Profil |
#7 · Zasláno: 5. 11. 2009, 13:23:35
Anonym:
„HTTP request failed! HTTP/1.1 403 Forbidden in“ z téhle hlavičky jasně plyne, že HTTP server vrací chybovou hlavičku 403 - tedy že z nějakého důvodu nemáte k požadovanému souboru přístup Shulík: „Spíš bych to tipl na zakázanou konfigurační direktivu url_fopen.“ to by chybová hláška byla URL file-access is disabled in the server configuration in |
||
Anonym Profil * |
#8 · Zasláno: 5. 11. 2009, 15:00:00
Jak tedy ošetřit existenci souboru na serveru, když file_get_contents nefunguje? Zkoušel jsem i jiný server a problém je stejný...
|
||
Anonym Profil * |
#9 · Zasláno: 5. 11. 2009, 15:01:44
Jde mi o to, aby uživatel neuploadoval 2x stejný soubor nebo soubor se stejným jménem.
|
||
PetrM Profil * |
#10 · Zasláno: 5. 11. 2009, 15:07:18
Možná by nebylo špatné ty soubory při uploadu přejmenovávat a tím zamezit duplicitě , pokud není vyžadováno mít původní názvy.
Třeba $nove_jmeno = base64_encode( md5_file($puvodni_nazev) . mktime() ); |
||
Anonym Profil * |
#11 · Zasláno: 5. 11. 2009, 15:27:42
PetrM:
Mohl by jsi ten kod trošku popsat? base64_encode chápu - zakóduje název (v podstatě přejmenuje), ale na co tam pak je md5_file a mktime()? |
||
PetrM Profil * |
#12 · Zasláno: 5. 11. 2009, 15:43:02
Kdyby tam zaslali dva soubory se stejným názvem tak výsledek base64_encode by byl stejný a bylo by to kničemu. Takže nejdříve vytvoříme hash ze souboru pomocí md5_file a přidáme ktomu aktuální unix timestamp a celé zakodujem pres base64_encode , což by mělo zamezit duplicitě.
|
||
Anonym Profil * |
#13 · Zasláno: 5. 11. 2009, 15:59:29
Stejný problém...
md5_file() [function.md5-file]: Unable to access dokument.doc in... md5_file(dokument.doc) [function.md5-file]: failed to open stream: No such file or directory in ... Ale soubor se přejmenuje i uploaduje...jen naskočí ty warningy |
||
Anonym Profil * |
#14 · Zasláno: 5. 11. 2009, 16:02:03
Proč naskakují když to jinak funguje dobře?
|
||
Časová prodleva: 15 let
|
0