php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #64152 php return wrong string with HEAD Request Method
Submitted: 2013-02-05 10:51 UTC Modified: 2015-04-13 15:23 UTC
Votes:4
Avg. Score:3.5 ± 1.7
Reproduced:3 of 3 (100.0%)
Same Version:2 (66.7%)
Same OS:2 (66.7%)
From: mmicael at gmail dot com Assigned: mike (profile)
Status: Closed Package: Output Control
PHP Version: 5.4.11 OS: linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: mmicael at gmail dot com
New email:
PHP Version: OS:

 

 [2013-02-05 10:51 UTC] mmicael at gmail dot com
Description:
------------
When we do a HEAD Request Method in php 5.4, php continue executing script even 
if the output buffer exceed the max output_buffering.

the next ob_start, ob_get_contents always return empty string

In php 5.2 and 5.3, the script die after sending the first output buffer that 
reach  the max output_buffering.

Test script:
---------------
$string = '';
for($i=0;$i<5000;$i++) $string .= '0';

ob_start();
echo "test1";
$content = ob_get_contents();
ob_end_clean();

error_log("1-$content");
echo $string;

ob_start();
echo "test2";
$content .= ob_get_contents();
ob_end_clean();

echo $string;

error_log("2-$content");

Expected result:
----------------
In php 5.2 and 5.3

1-test1

Actual result:
--------------
In php 5.4

1-test1
2-test1

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2013-02-05 11:00 UTC] mmicael at gmail dot com
Modifiying OS
 [2013-02-05 11:00 UTC] mmicael at gmail dot com
-Operating System: Any +Operating System: linux
 [2013-02-05 11:54 UTC] mmicael at gmail dot com
It seems that the behaviour have change with this commit 

https://github.com/php/php-src/commit/11d24c1593d6617f73d3f290617bd8994182f4dc#

the ouput.c don't care anymore about headers_only
 [2013-02-05 13:16 UTC] yvan at dugwood dot com
Seems to be a duplicate of https://bugs.php.net/bug.php?id=61272
 [2013-02-05 13:26 UTC] mmicael at gmail dot com
It's not the same bug

the other bug have already been integrated in php 5.4.11

my bug only appears with HEAD request_method
 [2013-02-07 14:54 UTC] mike@php.net
I cannot see a bug here, sure execution of the script continues...
 [2013-02-07 14:54 UTC] mike@php.net
-Status: Open +Status: Feedback
 [2013-02-07 14:59 UTC] mmicael at gmail dot com
-Status: Feedback +Status: Open
 [2013-02-07 14:59 UTC] mmicael at gmail dot com
it's only doing a HEAD request_method with curl -I for exemple

in php 5.2 and 5.3, the script is stopped after the echo $string;
in php 5.4, he continue bug the ob_get_contents after the echo $string; return 
empty response
 [2013-02-07 15:03 UTC] mike@php.net
-Status: Open +Status: Feedback
 [2013-02-07 15:03 UTC] mike@php.net
Which SAPI?
Are you sure, you don't see error_log output there?
 [2013-02-07 15:06 UTC] mmicael at gmail dot com
I am using php-fpm
 [2013-02-07 15:06 UTC] mmicael at gmail dot com
-Status: Feedback +Status: Open
 [2013-02-07 15:16 UTC] mike@php.net
Cannot reproduce.

I get no output with php-fpm in the response, but in the error_log.
 [2013-02-07 15:16 UTC] mike@php.net
-Status: Open +Status: Not a bug
 [2013-02-07 15:23 UTC] mmicael at gmail dot com
yes the script continue, but it log 

1-test1
2-test1

as we do a second ob_start ob_get_contents with an echo test2, after the echo 
$string, we should have in the logs

1-test1
2-test1test2
 [2013-02-07 15:45 UTC] mike@php.net
Ha, now I understand ;) Yes, this could be a regression.

php_output_header() checks headers_only and sets PHP_OUTPUT_DISABLED.
This leads to php_output_write() return immediately.
 [2013-02-07 15:45 UTC] mike@php.net
-Status: Not a bug +Status: Open -Assigned To: +Assigned To: mike
 [2013-03-27 14:04 UTC] mmicael at gmail dot com
Hi,

did you find a patch to correct this bug ?

Micael
 [2015-04-13 15:23 UTC] mike@php.net
-Status: Assigned +Status: Closed
 [2015-04-13 15:23 UTC] mike@php.net
Behaviour sanitised in PHP-7. See https://wiki.php.net/rfc/continue_ob
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Oct 09 00:01:27 2024 UTC