繁体   English   中英

PHP/Apache error.log 不执行 new_line 字符,为什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM