在PHP開發的時候常常會用到error_reporting(report_level)來調試自己的程序,下面列出了report_level可能值:
值 | 常量 | 描述 |
---|---|---|
1 | E_ERROR | 這是一個嚴重錯誤,不可恢復,如位置異常,內存不足等 |
2 | E_WARNING | 警告,最一般的錯誤,如函數的參數錯誤等 |
4 | E_PARSE | 解析錯誤,在解析PHP文件時產生,並強制PHP在執行前退出 |
8 | E_NOTICE | 通告表示可能在操作一些未知的變量等。在開發時可開啟通告,以保證程序是"安全通告"的,瑞在正式系統中,應關閉通告 |
16 | E_CORE_ERROR | 這個內部錯誤是由於PHP加載擴展失敗而導致的,並且會導致PHP停止運行並退出 |
32 | E_CORE_WARNING | PHP啟動時初始化過程中的警告(非致命性錯) |
64 | E_COMPILE_ERROR | 編譯錯誤是在編譯時發生,這個錯誤將導致PHP運行退出 |
128 | E_COMPILE_WARNING | 編譯警告用於告訴用戶一些不推薦的語法信息 |
256 | E_USER_ERROR | 用戶定義的錯誤將導致辭PHP退出,它對是來自PHP自身,而是來自腳本文件中。 |
512 | E_USER_WARNING | 腳本使用它來通知一個執行失敗,同時PHP也會用E_WARNING通知 |
1024 | E_USER_NOTICE | 用戶定義的通告用於在腳本中表示可能存在的錯誤 |
2048 | E_STRICT | 編碼標准化警告(建議如何修改以向前兼容) |
4096 | E_RECOVERABLE_ERROR | 接近致命的運行時錯誤,若未被捕獲則視同E_ERROR |
8191 | E_ALL | 除E_STRICT外的所有錯誤(PHP6中為8191,即包含所有) |
例子:
任意數目的以上選項都可以用“或”來連接(用 OR 或 |),這樣可以報告所有需要的各級別錯誤。例如,下面的代碼關閉了用戶自定義的錯誤和警告,執行了某些操作,然后恢復到原始的報錯級別:
<?php //禁用錯誤報告 error_reporting(0); //報告運行時錯誤 error_reporting(E_ERROR | E_WARNING | E_PARSE); //報告所有錯誤 error_reporting(E_ALL); error_reporting(7); /* 設置php錯誤檢測級別 E_ERROR - 致命性運行時錯 (1) E_WARNING - 運行時警告(非致命性錯)(2) E_PARSE - 編譯時解析錯誤 (4) 1+2+4 = 7 */ ?>
uchome系統中的調試處理:
D_BUG ? error_reporting(7) : error_reporting(0);