6

例如:
php.ini 文件

...
; 将错误记录到指定文件。
error_log = c:/php/php.log
...

错误日志文件 (c:/php/php.log) 包含以下格式的每个条目:

[12-Jun-2011 12:58:55] PHP 注意:未定义变量:在 C:\www\phpinfo.php 第 2 行测试\r\r\n 
[12-Jun-2011 12:59:01] PHP注意:未定义变量:在 C:\www\phpinfo.php 第 2 行测试\r\r\n 
[12-Jun-2011 13:01:12] PHP 注意:未定义变量:在 C:\www\phpinfo 中测试.php 在第 2 行\r\r\n 
[12-Jun-2011 13:02:11] PHP 注意:未定义的变量:在第 2 行的 C:\www\phpinfo.php 中测试\r\r\n 
[12 -Jun-2011 13:11:23] PHP 注意:未定义变量:在 C:\www\phpinfo.php 第 2 行测试\r\r\n 
[12-Jun-2011 13:12:10] PHP 注意:未定义变量:在第 2 行的 C:\www\phpinfo.php 中测试\r\r\n

每个错误行两个回车符和一个新行。

为什么会发生?如何将错误日志文件更改为默认格式:

[12-Jun-2011 12:58:55] PHP 注意:未定义变量:在 C:\www\phpinfo.php 第 2 行测试\r\n 
[12-Jun-2011 12:59:01] PHP 注意:未定义变量:在 C:\www\phpinfo.php 第 2 行测试\r\n 
[12-Jun-2011 13:01:12] PHP 注意:未定义变量:在 C:\www\phpinfo.php 在线测试2 \r\n 
[12-Jun-2011 13:02:11] PHP 注意:未定义的变量:在第 2 行的 C:\www\phpinfo.php 中测试\r\n 
[12-Jun-2011 13:11: 23] PHP 注意:未定义变量:在 C:\www\phpinfo.php 第 2 行测试\r\n 
[12-Jun-2011 13:12:10] PHP 注意:未定义变量:在 C:\www\ 中测试phpinfo.php 在第 2 行\r\n

PHP 版本5.3.6
Apache/ 2.2.15 (Win32)
在 Windows 7 Home Basic 和 Windows XP SP3 上测试,结果相同。

php.ini 文件只包含两个字符串

log_errors = 开启
error_log = c:/server/php.log

apache phpinfo() 脚本-> http://pastehtml.com/view/awvx1vgpp.html

PS。

服务器:nginx 1.0.4
FastCGI + PHP 版本5.3.6

一切都按预期工作。
nginx phpinfo() 脚本-> http://pastehtml.com/view/awvwvk9p9.html

4

1 回答 1

2

还有更多的 ini 指令来控制输出到错误日志中。这些在这个 PHP 手册页上进行了解释。

默认情况下,PHP 运行时不加载 ini 并且只error_log启用了设置和日志记录,它只输出一行。你也可以在你的系统上测试它,它很好地演示了命令行接口(CLI)“服务器应用程序编程接口(API)[SAPI]”:

php -n -d error_log=./error.log -d log_errors=1 -r 'error;'

使用此命令进行隔离运行并将其与您的输出进行比较。如果它也有两个行尾,那么这可能是您的 php 版本的错误。

如果 PHP 版本没有问题 [不是原始帖子 (OP) 中的情况],那么在您的应用程序中,一些设置看起来会被更改。您需要找出哪个设置。可能您可以通过注册自己的错误处理程序然后转储 ini 设置来找到它。

最后但并非最不重要的一点是,如果这不是对行尾的误解(请参阅我的评论),那么人们可能还想查看命名的 ini 设置error_prepend_string以及error_append_string有关错误显示的信息(但不是错误日志记录)。

于 2011-06-12T10:34:00.713 回答