2010-04-22 37 views
2

在PHP.INI中,我可以設置變量「error_log」,它現在設置爲「error_log」,它在每個目錄中包含該名稱的一個文件PHP錯誤日誌記錄 - 我可以將網站的所有錯誤記錄到單個文件嗎?

你知道嗎......如果我將它設置爲「public_html/error_log」 - 我只會得到一個錯誤日誌文件嗎?任何其他方式來這樣做?我真的只想要一個站點範圍內的錯誤文件來檢查,而不是每個子目錄上的一個。

對於獎勵標記,每次將新條目添加到文件時,我可以給自己發送一封電子郵件嗎?

留下來作爲讀者的練習 - 我可以忽略一些「錯誤」,它不是真的嗎?

回答

1

可以使用set_error_handler並將其設置爲它記錄到一個文件(並忽略某些類型的錯誤,如果你喜歡)的功能,併發送電子郵件

function myErrorHandler($errno, $errstr, $errfile, $errline) { 
    // check if we want to log the error 
    // log the error 
    // send the mail 
} 

set_error_handler('myErrorHandler'); 
+0

我總是使用自定義錯誤處理程序,所以這是一個很好的建議。但是,我不會在錯誤處理程序中發送電子郵件 - 我在自己的答案中對此進行了評論。 – 2010-04-23 16:42:13

0

指定的error_log中的絕對路徑,如

/var/logs/php.err 

在php.ini中會使默認的系統級php錯誤日誌文件。如果您需要以不同方式記錄特定區域,則可以通過將覆蓋error_log指令放入適當的虛擬主機/目錄設置(例如,site.conf Apach文件,.htaccess等)來執行每個服務器/每個目錄的日誌記錄。

1

我想答案是肯定的,這應該工作。

就電子郵件而言,knittl給出了正確答案,但存在風險。 1 - 最終可能會發生電子郵件氾濫,2 - 它可能會降低頁面傳輸速度,因爲PHP中的某些電子郵件發送方法需要幾秒鐘才能將控制權返回給調用腳本,如果尚未發送該腳本結果給客戶。

如果您想要電子郵件通知,您可以考慮一種替代方法,例如,一個由cron運行的腳本,如果該日誌自上次運行以來已寫入,則會向您發送電子郵件。這解決了這兩個問題,並且您可以按腳本運行的頻率控制電子郵件的最大速率。