程式只要在執行,就免不了會出現錯誤!或早或晚,只是時間問題罷了。
錯誤很常見,比如notice,warning等等。此時一般使用set_error_handler來處理:
<?phpset_error_handler(function($errno, $errstr, $errfile, $errline) );
// notice: use of undefined constant strlen
strlen;
// warning: strlen() expects exactly 1 parameter, 0 given
strlen();
?>
具體能做些什麼呢?統一管理錯誤日誌,或者呈現乙個相對友好的錯誤提示頁面等等。
但需要注意的是set_error_handler無法捕捉某些fatal error,比如下面這個錯誤:
<?phpset_error_handler(function($errno, $errstr, $errfile, $errline) );
// fatal error: call to undefined function undefined_function()
undefined_function();
?>
不過我們真的就一點辦法都沒有了麼?當然不是,我們不僅有辦法,而且還有好幾種:
第一種:ob_start + error_get_last
<?phpob_start(function($buffer)
return $buffer;
});// fatal error: call to undefined function undefined_function()
undefined_function();
?>
第二種:register_shutdown_function + error_get_last
<?phpregister_shutdown_function(function()
});// fatal error: call to undefined function undefined_function()
undefined_function();
?>
此外,所有的parse error(比如說少寫了分號之類的錯誤)都無法捕捉,不過換個角度看,解析錯誤的**本身就不應該發布,甚至都不應該進入版本庫,關於這一點,我以前寫過一篇《subversion鉤子》,裡面介紹了如何利用subversion鉤子做**語法檢查。
**自
PHP中的錯誤處理
一 php的錯誤級別 二 調整php錯誤報告級別 php中,調整錯誤報告級別的方式有兩種 1.修改php.ini檔案的配置項。a 會導致在當前伺服器環境下所有php檔案都受其影響。b 如果 更換伺服器,會導致配置檔案全部失效,需要重新配置。所以實際開發過程中,並不推薦使用此方式!2.在 中使用ini...
PHP中的錯誤處理
程式只要在執行,就免不了會出現錯誤!或早或晚,只是時間問題罷了。錯誤很常見,比如notice,warning等等。此時一般使用set error handler來處理 set error handler function errno,errstr,errfile,errline notice use...
PHP 錯誤處理
在 php 中,預設的錯誤處理很簡單。一條訊息會被傳送到瀏覽器,這條訊息帶有檔名 行號以及一條描述錯誤的訊息。在建立指令碼和 web 應用程式時,錯誤處理是乙個重要的部分。如果您的 缺少錯誤檢測編碼,那麼程式看上去很不專業,也為安全風險敞開了大門。本教程介紹了 php 中一些最為重要的錯誤檢測方法。...