PHP error_log输出换行符作为文字" "Mac OSX上的字符串


PHP error_log outputting line breaks as literal " " strings on Mac OSX

我正在编写一些使用error_log()进行调试的代码。问题是,由于某种原因,输出中的所有换行符都显示为文字'n字符串,因此没有实际的换行符(使得几乎不可能理解复杂的数组)。
我尝试使用error_log函数的var_exportprint_r,两者都导致了相同的结果:'n分散在整个文本块。我甚至尝试做str_replace 'nPHP_EOL都没有成功。我做错了什么?

澄清一下:'n字符串出现在控制台错误日志查看器、texttedit和终端中。

编辑

只是想提前注意到,是的,我知道你需要双引号'n字符串为它们显示为换行符。然而,我正在处理print_rvar_export的输出(检查数组),所以这并没有真正帮助我(我认为?)。

作为一种替代方法,您可以通过sed处理/替换''n',因此它们在控制台上显示为新行:

Linux

$ tail -f error_log | sed "s/'''n/''n/g"

Mac OS X

# WARNING - don't just copy+paste (see comment below)
$ tail -f error_log | sed "s/'''n/^M^L/g"

注意:在Mac OS X中,行尾是CRLF(回车换行),而在LINUX系统中只有LF(换行)

注2:Mac OS X要在Terminal输出^M,请按Control+V Control+M,要输出^L,请按Control+V Control+L

显然,这个问题与您的操作系统无关。PHP错误日志和换行符

…你应该可以在Debian上修改php.ini中的error_log指令,使其指向一个文件。如果未定义,它将通过不支持多行的syslog。