例如,而不是获得以下
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
未按预期执行的问题。
答案 0 :(得分:8)
我也面临同样的问题,但花了几分钟后我得到了一个解决方案。
当您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
作为命令。
答案 1 :(得分:1)
在某些情况下(例如Mac),使用perl可能会更好:
tail -100f /var/log/apache2/error.log | perl -pe 's/\\n/\n/g'
答案 2 :(得分:1)
该问题是由于Apache进程无法写入error_log文件而导致的,因此syslog会将其写入文件。 syslog弄乱了换行符。
那就这样做吧
chmod 777 error.log
这应该可以解决您的问题。 Source
答案 3 :(得分:0)
如果您正在浏览器中查看输出,请尝试使用<pre>
标记包装输出语句。
<?php
$post = Array("a" => "b", "c" => "d");
echo "<pre>";
print_r($post);
echo "</pre>";
?>
向浏览器输出格式化数组
Array
(
[a] => b
[c] => d
)
答案 4 :(得分:0)
调用 error_log
时,您可以强制 php 直接登录,而不是将其传递给 apache,这是默认行为。为此,只需指定 3 作为第二个参数,指定文件路径作为第三个参数。
error_log("error message", 3, $logFileLocation);
有关详细信息,请查看 PHP error_log docs。