2009-10-15 60 views
2

我在apache2/mod_perl下設置了多個虛擬主機。我使用ErrorLog指令爲每個虛擬主機獲取單獨的錯誤日誌。這隻在我使用Apache2 :: Log時按預期工作。 '警告'只會記錄到常規錯誤日誌。爲什麼我的Apache2 :: Log輸出用 n替換換行符?

所以這一切工作。最後。但還有一個問題:當我通過$ r-> log_error登錄時,發現換行符被替換爲\n

任何想法爲什麼發生這種情況,以及它如何修復?

謝謝。

+2

你確定你沒有把他們的單引號? ''嗨\ n''和''嗨\ n「' – 2009-10-15 17:41:05

回答

8

這不是一個mod_perl問題,而是一個Apache的問題。顯然有與打印輸出轉義的錯誤日誌(我不完全知道爲什麼)一些安全問題,所以你必須建立在明確啓用此在Apache中/使用這個配置是:

CFLAGS=-DAP_UNSAFE_ERROR_LOG_UNESCAPED ./configure 

如果」重新使用一個已經安裝好的Apache,沒有太多的事情可以改變這一點。

+0

優秀的知識,謝謝! – aidan 2009-10-26 15:31:04

0

如果您有預安裝的安裝,您可以使用這一行代碼來解決問題,但它必須包含在vhost中的每個頁面執行中,比如在header.php或config.php文件中。

ini_set('error_log','/var/log/apache2/error.log'); 
+0

對於錯誤日誌,這並不是很聰明。如果這是錯誤的遺漏... – itsbruce 2012-10-29 10:49:44

0

我知道這是很老的線程,但對谷歌搜索結果頂部仍然來了,所以才幫助所有,在mod_perl.pl以下變化也幫助我:

評論如下:

BEGIN { *CORE::GLOBAL::warn = \&Apache2::ServerRec::warn; } 

上面的是: 使警告轉到虛擬主機的日誌,而不是主服務器日誌。

我希望這可以幫助那裏的人喜歡我:)

相關問題