ugrás a tartalomhoz

fopen() hiba post_max_size méret felett

hüpphüpp · 2011. Dec. 5. (H), 18.59
Sziasztok!

Zip fájlokat szeretnék elérhetővé tenni csak regisztrált felhasználók számára.
Minden szépen működik amíg a fájlméret a bűvös 17M alatt marad, ezen felül viszont csak 202 bájt érkezik meg.

Van összefüggés az fopen() és a post_max_size között? Vagy ez csak valami véletlen egybeesés?

/*
fejléc...
*/
$f = @fopen($path, "rb") or exit('Nem sikerült...');
while(!feof($f))
 {
   echo fread($f,1024);
 }
fclose($f);
Tudnátok segíteni, hogy mi lehet a gond? Vagy milyen alternatív megoldás létezik?
max 20MB körüli fájlokról van egyébként szó.
 
1

fpassthru

Poetro · 2011. Dec. 5. (H), 19.53
A fenti trió helyett érdemesebb lehet az fpasstrhu-t használni, ami pontosan azt csinálja, mint amit szeretnél, csak ugye jóval kevesebb kóddal, ezáltal kisebb a hibalehetőség. Ha még ennél is kevesebb kódot szeretnél, akkor ott van még a readfile, ami kettő helyett már csak egyetlen parancs.

Mivel nem tudjuk, mi van az fopen előtt, így nehéz következtetni, hogy mi van előtte. Nem lehet, hogy valami output buffering be van kapcsolva, és mivel a rendelkezésére álló memória elfogy, így nem tudja kiszolgálni a fájlt? Amit ilyen esetekben érdemes tenni, hogy csak tényleg azt írod a fájlba, amire minimálisan szükség van egy fájl kiszolgálására, és ha akkor is elbukik, akkor érdemes tovább szaglászni. Ha nem, akkor valahol korábban van valami, ami bezavar.
2

Valóban!

hüpphüpp · 2011. Dec. 5. (H), 20.18
Az ob_end_clean(); a megoldás!
A fájl megnyitás elé beszúrva tökéletesen működik!
Köszönöm!