From: adyzah at hotmail dot com Operating system: Linux PHP version: 4.3.10 PHP Bug Type: Apache related Bug description: Memory leak on file dowloading when using sessions?
Description: ------------ I am testing the following code that pushes a file to the browser (Linux + Apache 1.3 + PHP 4.3.10 but tested also under several other configs) !!!!!! Try it with a BIG test1.zip (e.g. 100M in size) Try it with wget http://server/test.php or a browser but the result is more accurate when using wget since in browsers could work if you already had a succesfull download of a smaller file. !!!!!! What i discovered is that if i keep the 2 session initialisation functions the script will work ONLY if the allocated memory in php.ini is greater than the size of the tested file. If i remove the session functions the script works fine even if the test1.zip file is very big (hundreds of Megs) Reproduce code: --------------- <?php session_save_path('/tmp'); session_start(); $sFileName = 'test1.zip'; $sFileDir = '/var/www/html/'; header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment;filename=\"" . $sFileName . "\""); header("Content-Length: " . filesize($sFileDir . $sFileName)); header('Pragma: cache'); header('Cache-Control: public, must-revalidate, max-age=0'); header('Connection: close'); header('Expires: ' . date('r', time()+60*60)); header('Last-Modified: ' . date('r', time())); $oFp = fopen($sFileDir . $sFileName, "rb"); $iReadBufferSize = 512; while (!feof($oFp)) { echo fread ($oFp, $iReadBufferSize); } fclose ($oFp); exit; ?> Expected result: ---------------- The file should dowload via a browser or via wget Actual result: -------------- tail from apache error_log: Allowed memory size of 12582912 bytes exhausted (tried to allocate 10240 bytes) -- Edit bug report at http://bugs.php.net/?id=31763&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=31763&r=trysnapshot4 Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=31763&r=trysnapshot50 Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=31763&r=trysnapshot51 Fixed in CVS: http://bugs.php.net/fix.php?id=31763&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=31763&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=31763&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=31763&r=needscript Try newer version: http://bugs.php.net/fix.php?id=31763&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=31763&r=support Expected behavior: http://bugs.php.net/fix.php?id=31763&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=31763&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=31763&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=31763&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=31763&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=31763&r=dst IIS Stability: http://bugs.php.net/fix.php?id=31763&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=31763&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=31763&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=31763&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=31763&r=mysqlcfg
