Parse errorphp
解析錯誤。問題一般出在你的程序語句上,例如少了一個逗號分號之類的,從而致使解析器放棄執行解析。thinkphp
Fatal error
嚴重錯誤。原於你的程序,例如調用一個沒有定義的函數。函數
Warning
警告。通常出自類型的不匹配,或參數有問題等小問題,解析器仍能夠解析。ui
Notice
提示。給出提示信息,好比你沒有給一個變量賦值,卻要把它打印出來。spa
Strict notice
細微提醒。好比說你的文本格式啦,或是PHP4與PHP5之間的差別啦,沒必要管它們get
咱們通常PHP報錯機制是內部自帶的,可是經過 set_error_handler這個函數,咱們能夠經過本身自定義的函數,來顯示人性化的輸出,防止被黑客攻擊,由於it
自帶的錯誤信息會透露文件哪一行,那一個錯誤io
注:The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.function
上面列出的這幾個錯誤類型不能被自定義require
可是有一種方法, register_shutdown_funtiion 這個能夠作到,它的做用是 無論代碼是成功執行完成仍是報錯中斷,都會執行這個方法,報錯時,就會往logs裏面寫入錯誤信息
因此咱們能夠執行它,來輸出本身須要的頁面。
注:本人目前知道這個函數的用法,是在thinkphp裏面,並且是在使用require_once或者include_once的文件裏面,若是出現代碼錯誤,則不會出現原始的PHP報錯,demo以下
function getE(){
ob_end_clean();
echo 333;
}
register_shutdown_function('getE');
require_once 'index.php';
上面代碼中,index.php裏面有錯誤,可是也不會顯示.