開發PHP的朋友都知道,其實最擔心的就是程序中出現一些異常或錯誤,這些狀況如果輸出到用戶的螢幕會把用戶給嚇壞,甚至為此丟了工作,如果不輸出到螢幕就得想辦法記錄到日誌中,但是似乎不是每個人都有查看錯誤日誌的習慣,爲了解決這個尷尬的問題,所以我寫了這段代碼,其用意就是當我們寫的php程式出錯的時候把錯誤內容捕捉出來然後發到我們的email內.
先看效果:
<span style="color: #008080;">Define</span>('SYS_DEBUG',<span style="color: #0000ff;">false</span><span style="color: #000000;">); </span><span style="color: #0000ff;">IF</span><span style="color: #000000;">(SYS_DEBUG) { </span><span style="color: #008080;">ini_set</span>('display_errors','on'<span style="color: #000000;">); </span><span style="color: #008080;">Error_reporting</span>(<span style="color: #ff00ff;">E_ALL</span>);<span style="color: #008000;">//</span><span style="color: #008000;">上線后使用該設定Error_reporting(E_ERROR | E_WARNING | E_PARSE);</span> }<span style="color: #0000ff;">Else</span><span style="color: #000000;">{ </span><span style="color: #008080;">ini_set</span>('display_errors','off'<span style="color: #000000;">); </span><span style="color: #008080;">Error_reporting</span>(0<span style="color: #000000;">); } </span><span style="color: #008000;">//</span><span style="color: #008000;">錯誤捕捉</span> <span style="color: #008080;">Register_shutdown_function</span>('Fun::Error'<span style="color: #000000;">); </span><span style="color: #0000ff;">Class</span><span style="color: #000000;"> Fun{ </span><span style="color: #008000;">/*</span><span style="color: #008000;">* 通用出錯處理 参数: 要輸出的內容,是否終止執行程序 說明: 有傳值時該函式可以用來輸出自定義的錯誤內容 另外還可以配合Register_shutdown_function實現自動抓取錯誤內容,並將抓取的錯誤內容發送到Email內 Register_shutdown_function的機制是程序執行完畢或中途出錯時調用函數 如果是自動抓取錯誤時被調用,則會取得最後一次出錯的內容,如果發現沒有錯誤內容則跳出 返回: 內容會被直接輸出至螢幕或Email內 用法: Fun::Error('錯誤內容'); Fun::Error('錯誤內容',False); /*</span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Static</span> <span style="color: #0000ff;">Function</span> Error(<span style="color: #800080;">$M</span>='',<span style="color: #800080;">$E</span>=<span style="color: #0000ff;">True</span><span style="color: #000000;">){ </span><span style="color: #800080;">$ErrTpl</span>='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
{$M} |