濫用error_reporting之大坑

寫了一個腳本,批量輸出靜態內容。按照慣例,先require配置文件、公共文件,然後編碼我的業務邏輯。

很順利地寫完了,調試的時候發現腳本毫無提示地異常地中斷了,仔細看了一下代碼,原來是一個函數未定義,但是爲什麼不會報錯呢?我查看了php的配置display_error是打開的,而且我還設置了error_reporting(7),但是函數未定義的錯誤還是不會報,但如果在哪條語句後面沒有加上分號卻是能正常報錯。

用strace看一下系統調用吧,看看有沒有error之類的東東。


咦,竟然發現好多error_reporting,好像有點問題,一會設置error_reporting(7),一會設置error_reporting(0),這讓人很凌亂,估計也會讓解釋器很凌亂。

很自然地,找到所有文件裏面的error_reporting,將它設置爲7,果然,未定義函數的錯誤報告出來了。

一般來說,線上運營的系統應該關閉錯誤報告【防止敏感信息外泄】,開發調試的時候是打開錯誤報告的【方便調試】。這種報錯設置開關,一個項目裏面一個地方控制就ok了,畫蛇添足是不好的,除了會帶來不可預測的錯誤,還不利於系統的維護。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章