[英]PHP/Apache error.log doesn't execute new_line characters, why?
例如,而不是获得以下
post:Array (
"a" => "b",
"c" => "d"
)
我只是得到这个:
post:Array (\n "a" => "b",\n "c" => "d"\n)
在调试我的代码时阅读这个真的很不舒服。 因此,如果您对为什么这无法正常工作有任何建议,请告诉我。
我在连接到 Ubuntu 虚拟服务器的 Windows7 Putty 中运行它,据说它运行的是默认的 Apache/PHP 配置。 (很可能不是,但团队中总是没有人记得改变任何东西)
编辑:有人请求写入 error.log 的代码:
<?php
error_log(print_r(array("a"=>"b","c"=>"d"),1));
?>
查看错误日志的命令是:
sudo tail -f /var/log/apache2/error.log
sudo vim /var/log/apache2/error.log
sudo cat /var/log/apache2/error.log
在所有情况下,都会出现\\n
未按预期执行的问题。
我也遇到了同样的问题,但花了几分钟后我得到了解决方案。
当你做tail
使用如下
sudo tail -f /var/log/apache2/error.log | sed -e 's/\\n/\n/g'
如果你想你可以创建一个文件,给它一个名字并粘贴上面的命令并将它放在/usr/bin/
文件夹中
例如
vi tailme
内容如下:
#!/bin/bash
tail -f /var/log/apache2/error.log | sed -ue 's/\\n/\n/g'
并将其放在/usr/bin/
现在您可以使用tailme
作为命令。
在某些情况下(例如 Mac),使用 perl 可能会更好:
tail -100f /var/log/apache2/error.log | perl -pe 's/\\n/\n/g'
该问题是由于 Apache 进程无法写入 error_log 文件而导致的,因此 syslog 写入该文件。 系统日志弄乱了换行符。
所以只需这样做:
chmod 777 error.log
这应该可以解决您的问题。 来源
调用error_log
,您可以强制 php 直接记录日志,而不是将其传递给 apache,这是默认行为。 为此,只需将 3 指定为第二个参数,将文件路径指定为第三个参数。
error_log("error message", 3, $logFileLocation);
有关更多信息,请查看PHP error_log 文档。
如果您正在浏览器中查看输出,请尝试使用<pre>
标记包装输出语句。
<?php
$post = Array("a" => "b", "c" => "d");
echo "<pre>";
print_r($post);
echo "</pre>";
?>
将格式化的数组输出到浏览器
Array
(
[a] => b
[c] => d
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.