好吧,首先,我已經搜索了近40分鐘,並且找不到對具體問題的答案。我明白它最好修復錯誤,但這不是問題。在php中抑制2048錯誤
我需要做的是讓php NOT報告2048錯誤。原因是,我繼承了一個網站,我需要設置一個關閉功能來捕捉致命錯誤並向我發送短信。所有這一切都很好。然而,代碼不斷拋出2048錯誤,所以當我的關機功能命中最後拋出的錯誤總是2048而不是實際的致命錯誤。我不需要關閉顯示錯誤,因爲這不是問題。它是我關心的後端處理。
我已經通過關閉錯誤報告來測試這個。當我這樣做時,我得到了預期的結果,但這意味着我無法在服務器上記錄其他錯誤。我只是想讓它忽略2048個錯誤,我認爲這是E_STRICT。然而,我的錯誤報告只設置爲E_ERROR,我不認爲E_STRICT包含在那。
那麼,如何讓php完全停止報告2048錯誤,所以他們不會覆蓋我的實際致命錯誤?但請E_ERROR,這樣我就可以在服務器上登錄其他錯誤...
編輯
這是解決...排序:
我仍然不知道如何正確地抑制該錯誤或爲什麼error_reporting()影響error_get_last。但是,仍然可以在服務器上記錄錯誤時忽略該錯誤的基本問題已得到解決。我只是將錯誤報告完全關閉,並將錯誤報告添加到我的關閉功能中,以手動將數據寫入日誌文件。
這裏是我使用的所有非致命錯誤代碼:
$message="\n[".date('d-M-Y H:i:s',time())."] PHP Notice: ".$e['message']." in ".$e['file']." on line ".$e['line'];
$file=dirname(__FILE__) . '/error_log-'.date("m-d-Y").'.txt';
file_put_contents($file, $message, FILE_APPEND | LOCK_EX);
這不是我一直在尋找的答案,但它解決了我的問題,我仍然有興趣知道,如果沒有人真的知道如何關閉e_strict報告,以便它不會出現在error_get_last()中。
和平。
您是否嘗試確保它不是:** error_reporting(E_ALL&〜E_STRICT); **,例如。也許php.ini有錯誤或正在啓用E_STRICT。 –
我明確地設置error_reporting(E_ALL);在代碼中。我試過了:error_reporting(E_ALL&〜E_STRICT);和error_reporting(E_ALL^E_STRICT);他們都沒有工作。他們只能用於顯示錯誤並將其記錄到服務器。但不是爲什麼得到php報告error_get_last – Chris
對不起,我的意思是我設置它error_reporting(E_ERROR);不是e_all – Chris