|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-11-05 09:11 UTC] bonseb at free dot fr
[Might be related to bug #11213] Using : NT4 SP6 Apache 1.3.20 PHP 4.0.6 Zend Optimizer 1.1 (bug reproduced without also) I have a quite short PHP page needing to log something, and then switch to another PHP page. I use the following PHP code : error_log ($message, 0); header("Location: new-location.php"); I then get the following error message : Cannot add header information - headers already sent If I remove the call to error_log, the problem disappears, but I won't get the event logged :( Thus, error_log must be 'the one' producing the unexpected output. If I swap the two calls, (header first, then error_log), I'll get to new-location.php, but nothing will get logged :( If I specify a filename in the call to error_log, and leave it in second position (see following example), it works fine (except I don't automatically get the date and IP address of client like I used to get in Apache's log). error_log ($message, 3, 'd:/program files/apache group/apache/logs/error.log'); Here is my PHP configuration regarding logging functions : error_reporting = E_ALL & ~E_NOTICE display_errors = On display_startup_errors = Off log_errors = On Let's add another strange behaviour. If I add the following line in php.ini : error_log = d:/program files/apache group/apache/logs/error.log and execute again the first example (error_log with 2 args and then header), it works fine :) Any clues ? PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 05:00:01 2025 UTC |
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 ?