Edit report at https://bugs.php.net/bug.php?id=65416&edit=1

 ID:                 65416
 Updated by:         yohg...@php.net
 Reported by:        jwestbrook at gmail dot com
 Summary:            output buffering autostart setting php.ini
-Status:             Not a bug
+Status:             Feedback
 Type:               Bug
 Package:            Output Control
 Operating System:   linux 64bit AWS ami
 PHP Version:        5.4.17
 Block user comment: N
 Private report:     N

 New Comment:

I guess there is some kind of memory problem.
What modules are loaded in your web server and SAPI?

<?php
var_dump(get_loaded_extensions(), php_sapi_name());                             
                                  
?>

or paste phpinfo() output.

> at least 12 times a day PHP fails to start the output buffer and I get the 
error shown.

How many requests a day you have?


Previous Comments:
------------------------------------------------------------------------
[2013-08-26 21:35:48] jwestbrook at gmail dot com

@mike at php.net Yes that is the bug I'm reporting - the php.ini setting does 
not 
start the output buffer on every request.

------------------------------------------------------------------------
[2013-08-19 22:19:57] m...@php.net

Looks like when this is logged, there actually is no output buffer active, so 
ob_get_length() returns false.

------------------------------------------------------------------------
[2013-08-19 22:07:01] jwestbrook at gmail dot com

I also tried the settings of On and 1.

I also understand that #!/usr/bin/php means nothing to output buffering but is 
output that 
I want to capture if the php file is being run from a browser and discard.

>From what I understand that is not how the output buffering works. The way I 
>understand it 
the output buffer fills then dumps everything when it is full. In this instance 
before the 
output buffer fills I want to discard the first 15 characters because it will 
corrupt any 
binary files that the browser is trying to download.


Based on the test script attached ob_get_length() should ALWAYS return 15 
characters - 
however at least 12 times a day PHP fails to start the output buffer and I get 
the error 
shown.

------------------------------------------------------------------------
[2013-08-18 06:52:49] yohg...@php.net

"#!" does not have special meaning for Web server SAPI.

I think you are sending data larger than output buffer size. Then this is the 
way supposed to be.

output_buffering=On or 1 is special. It enables unlimited buffering. Anything 
other values set buffer chunk size and PHP tries to send data larger than chunk 
size.

Check your buffer size (i.e. output_buffering setting of php.ini file)
I guess you have very small output_buffering. Old output buffer increases size 
automatically, IIRC. New output buffer does not increase buffer size.

------------------------------------------------------------------------
[2013-08-07 19:47:35] jwestbrook at gmail dot com

Description:
------------
We recently upgraded from php 5.3 to php 5.4 and when the php.ini 
output_buffering 
setting is set to ON or anything greater than zero the output buffering does 
not 
always reliably start.


This is a problem for some scripts that have a shebang as the first line to 
make 
the script easily executable. But if you send a header or anything else after 
that 
first line it will fail.


based on the script attached the contents of the error log are

buffer statues : Array\n(\n)\n

Test script:
---------------
#!/usr/bin/php
<?php

$buffer_length = ob_get_length();
if($buffer_length != 15)
{
    error_log('buffer statues : '.print_r(ob_get_status(TRUE),1));
    exit;
}

//this header call will not always be successful
header("Content-type: application/pdf");

?>



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=65416&edit=1

Reply via email to