Edit report at https://bugs.php.net/bug.php?id=51367&edit=1
ID: 51367
Comment by: zeusgerde at arcor dot de
Reported by: lefevre dot 10 at osu dot edu
Summary: flush() doesn't inform headers_sent()'s filename or
linenumber values
Status: Feedback
Type: Bug
Package: Output Control
PHP Version: 5.2.13
Block user comment: N
Private report: N
New Comment:
Same bug for me on Windows 7 for PHP 5.3.10 (can't see a more recent version on
Windows snapshot site, only trunk with [0B])
Test script:
---------------
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
header('Content-Type: text/plain');
flush();
echo phpversion(), "\n";
$file = 'a';
$line = 'b';
if (headers_sent($file, $line)) {
var_dump($file, $line);
}
header('X-Foo: Bar');
Expected result:
----------------
5.3.10
string(35) "D:\htdocs\test\php\headers_sent.php"
int(6) // or 7 for line 7 "flush();"
Warning: Cannot modify header information - headers already sent in
D:\htdocs\test\php\headers_sent.php on line 17
Actual result:
--------------
5.3.10
string(0) ""
int(0)
Warning: Cannot modify header information - headers already sent in
D:\htdocs\test\php\headers_sent.php on line 17
Previous Comments:
------------------------------------------------------------------------
[2010-05-19 14:41:57] [email protected]
Please try using this snapshot:
http://snaps.php.net/php5.3-latest.tar.gz
For Windows:
http://windows.php.net/snapshots/
headers_sent() after flush() returns FALSE for me.
------------------------------------------------------------------------
[2010-03-23 18:46:36] lefevre dot 10 at osu dot edu
Change the '1 = 1' to '$a = 1' in test script ;)
------------------------------------------------------------------------
[2010-03-23 18:43:25] lefevre dot 10 at osu dot edu
Description:
------------
If flush() is called, a subsequent call to headers_sent() with $filename and
$linenumber specified does not bind the actual file name and line number of the
line where flush() appeared. Instead the values are empty string and 0,
respectively.
Test script:
---------------
<?
1 = 1;
flush();
if ( headers_sent( $file, $line) ) {
echo "Headers sent at $file: $line<br>";
}
echo "Some text here.<br>";
if ( headers_sent( $file, $line) ) {
echo "Headers sent at $file: $line<br>";
}
Expected result:
----------------
Headers sent at '/var/www/flush_test.php', line 5.
Some text here.
Headers sent at '/var/www/flush_test.php', line 8.
Actual result:
--------------
Headers sent at '', line 0.
Some text here.
Headers sent at '/var/www/flush_test.php', line 8.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=51367&edit=1