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

2022-08-30 21:49:35

我正在处理一些用于调试的代码。问题在于,由于某种原因,输出中的所有换行符都显示为文字字符串,因此没有实际的换行符(这使得几乎不可能理解复杂的数组)。
我尝试同时使用两者和函数,两者都导致了相同的结果:一个散落在各处的文本块。我甚至尝试过做,但没有成功。我做错了什么?error_log()\nvar_exportprint_rerror_log\nstr_replace\nPHP_EOL

澄清一下:字符串显示在控制台错误日志查看器、文本编辑和终端中。\n

编辑

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


答案 1

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

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 系统中,只有(换行符)CRLFLF

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


答案 2

显然,此问题与您的操作系统无关。请参阅此问题:PHP 错误日志和换行符

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


推荐