3

我可能只是具有與該錯誤處理文件的麻煩,但我已經記了幾個不同的方案:發送PHP錯誤默認錯誤日誌以及用戶自定義的錯誤日誌

  1. 當PHP拋出一個典型的錯誤,我想保持我放置的默認錯誤日誌記錄,但也有單獨的錯誤日誌基於錯誤類型/嚴重性(日誌只有致命的錯誤,所以我不必掃描過去數百萬小錯誤,但仍然有一般堆中記錄的這些小錯誤)。

  2. 對於Web應用/平臺(如Wordpress或MediaWiki等),存在PHP應用錯誤日誌中存儲的PHP錯誤(全部,不僅僅是web應用拋出的錯誤)。 (這幾乎肯定是基於嚴重性的,這個想法是去web應用程序的錯誤日誌,並能夠看到混合的PHP致命錯誤,以避免追查該域的錯誤日誌等)

  3. 也有一定的錯誤Web應用程序拋出的類型轉到常規錯誤日誌,並且它是自己的自定義日誌(我知道我已經看到了一個或另一個,但不是兩者)。

所以根本的問題是:怎樣纔可以有一個自定義的錯誤日誌不失/覆蓋默認的錯誤日誌?

另外,假設在大多數情況下,這個級別的錯誤和異常是可以互換的,還是需要採取其他步驟來執行類似的異常處理目標,這是非常安全的嗎?

+0

我會說:問你的系統管理員應該能夠腳本一些東西在誰perl/linux wihtin分鐘完成你告訴她/他做的事情。因爲默認情況下,PHP沒有你要找的功能。所以你需要添加它。 – hakre

+0

@hakre - 其中一個目標是可移植性,Web應用程序會寫入它自己的默認值。對你的建議的另一個限制(根本不是壞的)是我知道的不僅僅是我的系統管理員,而是沒有他們的訪問權限,所以這是試圖降低對他們的依賴。 – Anthony

+1

您可以爲每個應用程序編寫自己的錯誤處理程序,標準日誌記錄仍處於活動狀態,但您也可以編寫自己的日誌。甚至可能致命致命的錯誤(但我不知道那個)。 – hakre

回答

4

您可以設置自己的錯誤處理,仍然讓PHP應對已觸發錯誤照常

http://se.php.net/manual/en/function.set-error-handler.php

set_error_handler(function($errno, $errstr, $errfile, $errline) { 
    // do what you want 
    return false; // returning false makes PHP execute its own error handler as well 
}); 
+0

'return false'是訣竅。我從來沒有猜到。我將閱讀異常處理以瞭解是否需要關於這些更多信息。謝謝! – Anthony

+0

謝謝你,我一直在運行我自己的錯誤處理程序代碼,所以我可以給自己發送一些錯誤,比如當支付網關調用失敗或返回404時,但是這樣做會阻止系統日誌被填充 - 這給了我最好的兩個世界。 – jammypeach