PHP error_log在Mac OSX上输出换行符作为文字“\ n”字符串

时间:2011-11-29 23:16:53

标签: php macos terminal

我正在研究一些使用error_log()进行调试的代码。问题在于,出于某种原因,输出中的所有换行符都显示为文字\n字符串,因此没有实际的换行符(使其无法理解复杂的数组)。 我尝试将var_exportprint_rerror_log函数同时使用,并且两者都导致了相同的结果:一个文本块,其中\n分散在各处。我甚至试过str_replace \nPHP_EOL但没有成功。我做错了什么?

澄清:\n字符串出现在Console错误日志查看器,TextEdit和终端中。

修改

只是想提前注意是的,我知道你需要双引号\n字符串才能显示为换行符。但是,我正在处理来自print_rvar_export的输出(以检查数组),所以这对我没有帮助(我认为?)。

2 个答案:

答案 0 :(得分:34)

作为替代方案,您可以通过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中,当在LINUX系统中时,行的结尾为CRLF(回车换行)仅LF(换行)

注2:在Mac OS X中输出^M终端,按Control+V Control+M,输出^L,按Control+V Control+L

答案 1 :(得分:7)

显然,此问题与您的操作系统无关。请参阅此问题:PHP error log and newline chars

  

...您应该能够在Debian上的php.ini中更改error_log指令以指向文件。如果这是未定义的,它将通过syslog,它不支持多行。