From: victor-php at boivie dot com
Operating system: FreeBSD 4.7
PHP version: 5.0.0
PHP Bug Type: Filesystem function related
Bug description: readfile (or fpassthru or even php_stream_passthru) can not output
large++ file
Description:
------------
victor:~> php -v
PHP 5.0.0RC2 (cgi) (built: Apr 30 2004 08:15:25)
(oh well, this issue still exists in 5.0.0)
victor:~> grep output /usr/local/lib/php.ini
<snip>
output_buffering = 4096
<snip>
output_handler =
<snip>
zlib.output_compression = Off
victor:~> ls -l test.fil
-rw-r--r-- 1 root wheel 734939136 Oct 14 2003 test.fil
--------------------------------
As the results shows, PHP tries to allocate the whole file in memory which
is bad. I thought php_stream_passthru used a small buffer and that it
didn't allocate the whole file, but I'm not familiar with the PHP source
code.
Reproduce code:
---------------
<?php
readfile("test.fil");
?>
Expected result:
----------------
A lot of file data in the browser window (the file contents)
Actual result:
--------------
PHP Fatal error: Out of memory: cannot allocate 734941208 bytes! in
/usr/home/victor/foo.php on line 2
Content-type: text/html
X-Powered-By: PHP/5.0.0RC2
<br />
<b>Fatal error</b>: Out of memory: cannot allocate 734941208 bytes! in
<b>/usr/home/victor/foo.php</b> on line <b>2</b><br />
--
Edit bug report at http://bugs.php.net/?id=29159&edit=1
--
Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=29159&r=trysnapshot4
Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=29159&r=trysnapshot5
Fixed in CVS: http://bugs.php.net/fix.php?id=29159&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=29159&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=29159&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=29159&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=29159&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=29159&r=support
Expected behavior: http://bugs.php.net/fix.php?id=29159&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=29159&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=29159&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=29159&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=29159&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=29159&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=29159&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=29159&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=29159&r=float