我正在研究一些使用error_log()
进行调试的代码。问题在于,由于某种原因,输出中的所有换行符都显示为文字\n
字符串,因此没有实际的换行符(使得它几乎不可能理解复杂的数组)。
我尝试使用var_export
和print_r
以及error_log
函数,两者都导致了相同的结果:\n
散布在整个文本块。我甚至尝试对str_replace
做\n
PHP_EOL
没有成功。我究竟做错了什么?
为了澄清:\n
字符串出现在Console错误日志查看器,TextEdit和终端中。
编辑
只是想提前注意是的,我知道你需要双引号\n
字符串才能显示为换行符。但是,我正在处理来自print_r
或var_export
的输出(以检查数组)所以这对我没有帮助(我认为?)。
显然,此问题与您的操作系统无关。看到这个问题:PHP error log and newline chars
...你应该能够在Debian上的php.ini中更改error_log指令以指向文件。如果未定义,则它将通过不支持多行的syslog。
作为替代方案,您可以通过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中输出终端中的^M
,按Control+V Control+M
,输出^L
,按Control+V Control+L