這篇文章通過執行個體代碼給大家介紹了開發模式與產品模式下的PHP報錯處理,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
程式報錯總是在所難免,儘管我們書寫代碼時已經格外小心。
在開發php程式時,我們希望遇到php報錯,可以第一時間展示給我們,以便於調試。當程式開發完成,成為正式產品時,我們希望將沒有預測到的報錯資訊記錄到錯誤記錄檔中,而不是將這些報錯資訊展示給使用者,因為使用者極有可能利用這些暴露出指令碼路徑、資料庫資訊或其他的報錯資訊進行一些破壞性的駭客行動。
php的報錯處理方式根據以下配置選項進行,這些配置可以在代碼中聲明以設定,也可以在php.ini檔案中設定。如果不需要經常改動這些配置,還是建議在php.ini檔案中設定,以使你的代碼更清爽簡潔。
# 是否列印錯誤資訊到瀏覽器/命令列介面# 開發模式下建議開啟,產品模式下強烈建議關閉ini_set('display_errors', 'On');# 是否記錄錯誤資訊到日誌# 開發模式和產品模式下都建議開啟ini_set('log_errors', 'On');# 指定錯誤資訊記錄檔,若開啟了 log_errors 選項,記得指定記錄檔位置# 要確保執行 php 指令碼的系統使用者擁有該檔案的 write 許可權,否則日誌無法被寫入ini_set('error_log', '/usr/local/php/errors.log');# 該選項用以設定錯誤報表的等級# 等同於 error_reporting(E_ALL) # 無論開發模式還是產品模式下都建議開到E_ALL(報告所有的錯誤資訊)# 產品模式下也需要設定此選項,因為關閉了 display_errors 並開啟了 log_errors# 所以瀏覽器/命令列介面不會因此暴露報錯資訊ini_set('error_reporting', E_ALL);
除此之外,php 還給開發人員提供了在代碼中將自訂的錯誤資訊記錄到錯誤記錄檔檔案的內建函數:
bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )
Sends an error message to the web server's error log or to a file.
必選參數是 message ,調用此函數會將 message 寫入 php.ini 中定義的 error_log 檔案中。