php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #29544 not flush stdout in pipe command which ob_handler and with-apxs2 configuration
Submitted: 2004-08-06 10:41 UTC Modified: 2005-03-19 01:00 UTC
From: suguru at sak dot iis dot u-tokyo dot ac dot jp Assigned:
Status: No Feedback Package: Output Control
PHP Version: 5.0.0 OS: Linux, Solaris
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: suguru at sak dot iis dot u-tokyo dot ac dot jp
New email:
PHP Version: OS:

 

 [2004-08-06 10:41 UTC] suguru at sak dot iis dot u-tokyo dot ac dot jp
Description:
------------
PHP version: 5.0.0, CVS(2004-08-06 06:30)
PHP5 configuration: '--with-apxs2' and '--mbstring' (when 'output_handler=mb_output_handler')
php.ini: specify 'output_handler=ob_gzhandler' or 'output_handler=mb_output_handler'
Apache version: 2.0.50
OS and compiler: Linux(debian)+gcc-3.3.4, Solaris8+gcc-3.3.3

In above configuration, php(cli version) does not flush tail of stdout when output to pipe(|).

point:
 1. PHP is cli version (not apache2handler, but it is configurated with '--with-apxs2'.)
 2. Only when 'output_handler' is specified in php.ini.
    No effect ob_start()/ob_end_*() in PHP script.
 3. Only when Unix pipe(|) output. Normal output is correct.

solution:
  call flush() at the exit point of script.

Reproduce code:
---------------
----test.php----
<?php
$dat="01234567890123456789012345678901234567890123456789\n";
for( $l = 0; $l < 100; ++$l ){
  print sprintf( "%2d ", $l ) . $dat;
}
?>

---- ./php.ini ----
use php.ini-recommended adding 'output_handler=ob_gzhandler' or 'output_handler=mb_output_handler'.

---- execute ----
./sapi/cli/php -c ./php.ini test.php | tail -5


Expected result:
----------------
95 01234567890123456789012345678901234567890123456789
96 01234567890123456789012345678901234567890123456789
97 01234567890123456789012345678901234567890123456789
98 01234567890123456789012345678901234567890123456789
99 01234567890123456789012345678901234567890123456789


Actual result:
--------------
67 01234567890123456789012345678901234567890123456789
68 01234567890123456789012345678901234567890123456789
69 01234567890123456789012345678901234567890123456789
70 01234567890123456789012345678901234567890123456789
71 0123456789012345678901234567890123456789012

note: not exactly same result in case of diffent OS and so on.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-03-06 20:53 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-03-19 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 11:01:30 2024 UTC