#30393 [NoF->Opn]: CLI and ISAPI give different line endings in ERRORS.LOG file.
| From: | richard dot quadling at bandvulc dot co dot uk | Date: | Fri, 25 Nov 2005 11:49:04 +0000 |
| Subject: | #30393 [NoF->Opn]: CLI and ISAPI give different line endings in ERRORS.LOG file. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-88937@lists.php.net to get a copy of this message | ||
ID: 30393
User updated by: richard dot quadling at bandvulc dot co dot uk
Reported By: richard dot quadling at bandvulc dot co dot uk
-Status: No Feedback
+Status: Open
Bug Type: Scripting Engine problem
Operating System: Windows XP SP2
PHP Version: 5.0.2
New Comment:
Still not working.
Errors logged from CLI and ISAPI have different line endings on
Windows.
Previous Comments:
------------------------------------------------------------------------
[2005-03-15 01:00:18] 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".
------------------------------------------------------------------------
[2005-03-07 22:04:26] 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
------------------------------------------------------------------------
[2004-10-11 10:38:27] richard dot quadling at bandvulc dot co dot uk
I may have got the CLI / ISAPI bits back to front half way through
this.
Sorry.
------------------------------------------------------------------------
[2004-10-11 10:13:51] richard dot quadling at bandvulc dot co dot uk
Description:
------------
I use both CLI and ISAPI PHP code.
I have PHP.INI set to log errors to "PHP Errors.log".
If I have an error in a CLI program, the error that is logged ends with
CR/LF.
If I have an error in a ISAPI program (i.e. launched by a web server),
I get the error with CR/CR/LF. One too many CR.
An example from my error log file (hoping that this gets through
cleanly)...
[08-Oct-2004 15:00:03] PHP Notice: Undefined offset: 1 in C:\McAfee
AntiVirus Updates\AVUpdate.php on line 90[cr/lf]
[08-Oct-2004 15:00:03] PHP Notice: Undefined offset: 2 in C:\McAfee
AntiVirus Updates\AVUpdate.php on line 90[cr/lf]
[08-Oct-2004 15:18:54] PHP Notice: Undefined variable: _SESSION in
C:\WebSites\PHP\Includes\class_Form_Maint.inc on line 332[cr/cr/lf]
[08-Oct-2004 15:18:54] PHP Notice: Undefined variable:
sRequireFormAction in C:\WebSites\PHP\Includes\class_Form_Maint.inc on
line 332[cr/cr/lf]
[08-Oct-2004 15:18:54] PHP Notice: Undefined variable: _SESSION in
C:\WebSites\PHP\Includes\class_Form_Maint.inc on line 332[cr/cr/lf]
I'm not using the CGI version.
Having examined the source, I can see why this happens the extra CR
occurs.
In Windows, opening a file using C's fopen, will open the file in text
mode unless 'b' as a mode.
So, the constant PHP_EOL is set to "\r\n" (main\php.h line 58).
The function php_log_err (main\main.c line 344) only uses append mode -
"a" - to open the file. Which will be in text mode and "\r\n" will
become "\r\r\n", as "\n" => "\r\n" in a text file.
But, why this is not true for the CLI version ...
Now. The PHP_EOL was added by 5.0.2 (NEWS line 10).
Examining main\php.h (Lines 49 to 68) it LOOKS like there is a way
through to setting PHP_EOL to \n (which is what the CLI version is
outputting.
I am not sure, but is the constant PHP_WIN32 set for ALL windows forms
of PHP (ISAPI, CGI, CLI)? If not, then this may be a cause. I can see
no other way that PHP_EOL could NOT be "\r\n" (which is wrong for a
text file, but ...).
Solution? I think opening the error file in binary mode ("ab") will
mean you do not need to change the PHP_EOL.
As a final request, is there any one who can help me get PHP to
compile? I don't have newsgroup access here.
Regards,
Richard Quadling.
Reproduce code:
---------------
Set PHP ...
error_log = C:\WebSites\PHP\PHP Errors.log
and then any PHP code that will generate an error.
<?php
$var = 1 / 0; // Cannot divide by zero.
?>
Run this in both CLI and ISAPI mode.
I ran the program 4 times, first in ISAPI mode (via a webpage) and then
in CLI mode.
Expected result:
----------------
[11-Oct-2004 09:09:22] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:36] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:37] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:37] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:56] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:57] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:57] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:57] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
Actual result:
--------------
[11-Oct-2004 09:09:22] PHP Warning: Division by zero in Unknown on
line 0[cr/cr/lf]
[11-Oct-2004 09:09:36] PHP Warning: Division by zero in Unknown on
line 0[cr/cr/lf]
[11-Oct-2004 09:09:37] PHP Warning: Division by zero in Unknown on
line 0[cr/cr/lf]
[11-Oct-2004 09:09:37] PHP Warning: Division by zero in Unknown on
line 0[cr/cr/lf]
[11-Oct-2004 09:09:56] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:57] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:57] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
[11-Oct-2004 09:09:57] PHP Warning: Division by zero in Unknown on
line 0[cr/lf]
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=30393&edit=1