| Bug #13933 | error_log and HTTP redirect using header conflict | ||||
|---|---|---|---|---|---|
| Submitted: | 5 Nov 2001 9:11am UTC | Modified: | 5 Feb 2002 6:34pm UTC | ||
| From: | bonseb at free dot fr | Assigned to: | yohgaki | ||
| Status: | Closed | Category: | Output Control | ||
| Version: | 4.0.6 | OS: | Windows NT4 SP6 | ||
[5 Nov 2001 9:11am UTC] bonseb at free dot fr
[12 Nov 2001 5:01pm UTC] zak@php.net
Sounds like error_log() was generating an error message because the error_log directive was not set. Once the error message was generated, output would be sent to the browser, causing the headers to be sent and the header() call to fail. Try unsetting the error_log directive in php.ini and run a script that only calls error_log().
[12 Nov 2001 7:54pm UTC] sniper@php.net
Status -> feedback (Zak! try to remember? :)
[5 Dec 2001 4:24am UTC] bonseb at free dot fr
I finally found time to test. Here it goes.
First of all, PHP config is:
error_log is not set
display_errors is off
log_errors is on
error_reporting is standard (E_ALL & ~E_NOTICE)
Then, the page I'm testing:
<?
error_log ("this is a test", 0);
header("Location: index.php");
?>
And finally, the results:
- in Apache's log file, I get these two lines:
[Wed Dec 05 10:09:59 2001] [error] [client 172.22.50.91] this is a test
[Wed Dec 05 10:09:59 2001] [error] [client 172.22.50.91] PHP Warning:
Cannot add header information - headers already sent in
d:\wwwroot\htdocs\csf_recette\titi.php on line 3
- the source of the generated page displayed in IE is as follow,
eventhough nothing has been output:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html;
charset=iso-8859-1"></HEAD>
<BODY></BODY></HTML>
Conclusion:
- error_log works fine, it does what I expect, but it might do a little
more;
- PHP complains about something being output *before* the call to
header. I've tried removing this call (to header), my message is logged,
and I *still* get the same output;
- thus, somehow, the call to error_log produces PHP or Apache to
generate this unexpected HTML code while logging;
I've tried almost the same settings on another server (difference in
php.ini is display_errors on) and it works quite fine.
Could there be other parts of PHP's configuration, or even Apache's
conf, altering the expected behaviour ?
[10 Dec 2001 8:40pm UTC] zak@php.net
Assigning it to myself so that I don't forget about it. :)
[12 Dec 2001 4:51am UTC] yohgaki@php.net
Zak, is this bug analyzed? I'm trying to sort out output buffering problems. Thanks.
[31 Dec 2001 7:17pm UTC] zak@php.net
Assigning this to Yasuo :)
[5 Feb 2002 6:34pm UTC] yohgaki@php.net
This bug has been fixed in CVS.
