Bug #61636 [Fbk->NoF]: readfile() resp. fpassthru() try to allocate complete file into memory
| From: | php-bugs at lists dot php dot net | Date: | Sun, 14 Feb 2021 04:22:08 +0000 |
| Subject: | Bug #61636 [Fbk->NoF]: readfile() resp. fpassthru() try to allocate complete file into memory | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-232143@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=61636&edit=1
ID: 61636
Updated by: php-bugs@lists.php.net
Reported by: kontrollfreak at arcor dot de
Summary: readfile() resp. fpassthru() try to allocate complete
file into memory
-Status: Feedback
+Status: No Feedback
Type: Bug
Package: Apache related
Operating System: Windows XP SP3
PHP Version: master-Git-2012-04-05 (snap)
Assigned To: cmb
Private report: N
New Comment:
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
Previous Comments:
------------------------------------------------------------------------
[2021-02-03 13:46:41] cmb@php.net
Is this still an issue with any of the actively supported PHP
versions[1]?
[1] <https://www.php.net/supported-versions.php>
------------------------------------------------------------------------
[2013-04-15 07:06:12] kontrollfreak at arcor dot de
To be sure, I reran the test this morning under following conditions:
---------------------------------------------------------------------
- Windows XP SP3
- Apache 2.4.4 from http://www.apachelounge.com/download/win32/binaries/httpd-2.4.4-win32.zip
- PHP 5.4.14 from http://windows.php.net/downloads/releases/php-5.4.14-Win32-VC9-x86.zip
httpd.conf:
-----------
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule php5_module modules/php5apache2_4.dll
Listen 80
LogLevel trace8
DocumentRoot htdocs
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php.ini:
--------
*empty*
Test script:
------------
<?php
error_reporting(-1);
while(ob_get_level())
ob_end_flush();
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="test.bin"');
header('Content-Length: 209715200');
readfile('test.bin');
?>
Expected result:
----------------
A download of file "test.bin" containing 200 MB of NUL bytes
Actual result:
--------------
The result has changed. I do not get the out of memory error anymore. Instead Firefox 20.0.1 shows
the following:
The connection was reset
The connection to the server was reset while the page was loading.
Apache error.log:
-----------------
[Mon Apr 15 09:03:29.719610 2013] [core:trace3] [pid 2588:tid 1884] core.c(3034): Setting LogLevel
for all modules to trace8
[Mon Apr 15 09:03:29.749653 2013] [mpm_winnt:notice] [pid 2588:tid 1884] AH00455: Apache/2.4.4
(Win32) PHP/5.4.14 configured -- resuming normal operations
[Mon Apr 15 09:03:29.749653 2013] [mpm_winnt:notice] [pid 2588:tid 1884] AH00456: Server built: Feb
23 2013 16:24:03
[Mon Apr 15 09:03:29.749653 2013] [core:notice] [pid 2588:tid 1884] AH00094: Command line:
'httpd -d C:/Apache24'
[Mon Apr 15 09:03:29.759668 2013] [mpm_winnt:notice] [pid 2588:tid 1884] AH00418: Parent: Created
child process 2576
[Mon Apr 15 09:03:29.759668 2013] [mpm_winnt:debug] [pid 2588:tid 1884] mpm_winnt.c(422): AH00402:
Parent: Sent the scoreboard to the child
[Mon Apr 15 09:03:30.230345 2013] [core:trace3] [pid 2576:tid 1868] core.c(3034): Setting LogLevel
for all modules to trace8
[Mon Apr 15 09:03:30.280417 2013] [core:trace3] [pid 2576:tid 1868] core.c(3034): Setting LogLevel
for all modules to trace8
[Mon Apr 15 09:03:30.300445 2013] [mpm_winnt:debug] [pid 2576:tid 1868] mpm_winnt.c(1708): AH00453:
Child process is running
[Mon Apr 15 09:03:30.300445 2013] [mpm_winnt:debug] [pid 2588:tid 1884] mpm_winnt.c(505): AH00408:
Parent: Duplicating socket 1892 (0.0.0.0:80) and sending it to child process 2576
[Mon Apr 15 09:03:30.300445 2013] [mpm_winnt:debug] [pid 2588:tid 1884] mpm_winnt.c(524): AH00411:
Parent: Sent 1 listeners to child 2576
[Mon Apr 15 09:03:30.300445 2013] [core:trace4] [pid 2588:tid 1884] mpm_common.c(526): mpm child
2576 (gen 0/slot 0) started
[Mon Apr 15 09:03:30.300445 2013] [mpm_winnt:debug] [pid 2576:tid 1868] mpm_winnt.c(343): AH00391:
Child: Retrieved our scoreboard from the parent.
[Mon Apr 15 09:03:30.300445 2013] [mpm_winnt:debug] [pid 2576:tid 1868] mpm_winnt.c(458): AH00403:
Child: Waiting for data for listening socket 0.0.0.0:80
[Mon Apr 15 09:03:30.300445 2013] [mpm_winnt:debug] [pid 2576:tid 1868] mpm_winnt.c(483): AH00407:
Child: retrieved 1 listeners from parent
[Mon Apr 15 09:03:30.300445 2013] [mpm_winnt:debug] [pid 2576:tid 1868] child.c(955): AH00352:
Child: Acquired the start mutex.
[Mon Apr 15 09:03:30.300445 2013] [mpm_winnt:notice] [pid 2576:tid 1868] AH00354: Child: Starting 64
worker threads.
[Mon Apr 15 09:03:30.310460 2013] [mpm_winnt:debug] [pid 2576:tid 1252] child.c(354): AH00334:
Child: Accept thread listening on 0.0.0.0:80 using AcceptFilter data
[Mon Apr 15 09:03:33.444967 2013] [core:trace5] [pid 2576:tid 1260] protocol.c(622): [client
127.0.0.1:1146] Request received from client: GET /test.php HTTP/1.1
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_request.c(300): [client
127.0.0.1:1146] Headers received from client:
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_request.c(303): [client
127.0.0.1:1146] Host: localhost
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_request.c(303): [client
127.0.0.1:1146] User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_request.c(303): [client
127.0.0.1:1146] Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_request.c(303): [client
127.0.0.1:1146] Accept-Language: en-US,en;q=0.5
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_request.c(303): [client
127.0.0.1:1146] Accept-Encoding: gzip, deflate
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_request.c(303): [client
127.0.0.1:1146] Connection: keep-alive
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_request.c(303): [client
127.0.0.1:1146] Cache-Control: max-age=0
[Mon Apr 15 09:03:33.444967 2013] [authz_core:debug] [pid 2576:tid 1260] mod_authz_core.c(827):
[client 127.0.0.1:1146] AH01628: authorization result: granted (no directives)
[Mon Apr 15 09:03:33.444967 2013] [core:trace3] [pid 2576:tid 1260] request.c(225): [client
127.0.0.1:1146] request authorized without authentication by access_checker_ex hook: /test.php
[Mon Apr 15 09:03:33.444967 2013] [http:trace3] [pid 2576:tid 1260] http_filters.c(960): [client
127.0.0.1:1146] Response sent with status 200, headers:
[Mon Apr 15 09:03:33.444967 2013] [http:trace5] [pid 2576:tid 1260] http_filters.c(969): [client
127.0.0.1:1146] Date: Mon, 15 Apr 2013 07:03:33 GMT
[Mon Apr 15 09:03:33.444967 2013] [http:trace5] [pid 2576:tid 1260] http_filters.c(972): [client
127.0.0.1:1146] Server: Apache/2.4.4 (Win32) PHP/5.4.14
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_filters.c(804): [client
127.0.0.1:1146] X-Powered-By: PHP/5.4.14
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_filters.c(804): [client
127.0.0.1:1146] Content-Disposition: attachment; filename=\\"test.bin\\"
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_filters.c(804): [client
127.0.0.1:1146] Content-Length: 209715200
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_filters.c(804): [client
127.0.0.1:1146] Keep-Alive: timeout=5, max=100
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_filters.c(804): [client
127.0.0.1:1146] Connection: Keep-Alive
[Mon Apr 15 09:03:33.444967 2013] [http:trace4] [pid 2576:tid 1260] http_filters.c(804): [client
127.0.0.1:1146] Content-Type: application/octet-stream
[Mon Apr 15 09:03:33.444967 2013] [core:trace6] [pid 2576:tid 1260] core_filters.c(523): [client
127.0.0.1:1146] core_output_filter: flushing because of THRESHOLD_MAX_BUFFER
------------------------------------------------------------------------
[2013-04-15 04:21:19] pajoye@php.net
And you still got the out of memory error?
------------------------------------------------------------------------
[2013-04-14 13:59:28] kontrollfreak at arcor dot de
In reply to [2013-04-14 12:55 UTC] pajoye@php.net:
During the test output buffering was disabled by the following snippet.
Disable output buffering:
-------------------------
<?php
while (ob_get_level())
ob_end_flush();
?>
------------------------------------------------------------------------
[2013-04-14 12:55:29] pajoye@php.net
Be sure to disable output buffering, see http://www.php.net/readfile
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=61636
--
Edit this bug report at https://bugs.php.net/bug.php?id=61636&edit=1