簡體   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