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