PHP 错误日志和换行符

2022-08-31 01:10:06

允许或阻止转义调试输出中的换行符的 PHP 配置设置是什么?

在两个不同的安装(运行 MAMP/OSX 的开发笔记本电脑和运行 debian 的开发服务器)上,我在调试时的错误日志中看到不同的结果。

error_log(print_r(array(1,2,4),1));

在 Debian 上,这出现在 /var/log/apache2/error 中.log为

[Thu Jul 30 11:32:34 2009] [error] [client 118.93.246.104] Array\n(\n    [0] => 1\n    [1] => 2\n    [2] => 4\n)\n, referer: http://dev.example.org/

在 OSX 上,这在 /Applications/MAMP/logs/php_error_log 中显示为

[30-Jul-2009 11:34:00] Array
(
    [0] => 1
    [1] => 2
    [2] => 4
)

我更喜欢 MAMP 的调试方式(除了将日志文件重新定位到 /Applications 目录)。

谢谢!


答案 1

Chris,你应该能够在你的 php.ini Debian 上更改 error_log 指令以指向一个文件。如果未定义,它将通过不支持多行的系统日志。

详:

error_log功能

error_log指令


答案 2

当 Apache 进程无法写入error_log文件时,会导致问题,因此系统日志会写入该文件。系统日志弄乱了换行符。

所以就做:

chmod 777 error.log

这应该可以解决您的问题。


推荐