「PHP」最詳細PHP從入門到精通(五)——PHP錯誤處理
PHP從入門到精通
之PHP中的字元串
在創建腳本和 web 應用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那麼程序看上去很不專業,也為安全風險敞開了大門。
本教程介紹了 PHP 中一些最為重要的錯誤檢測方法。
我為大家講解不同的錯誤處理方法:
PHP中的錯誤處理
1、PHP的錯誤級別:見表格。
2、調整PHP錯誤報告級別:
PHP中,調整錯誤報告級別的方式有兩種:
①修改PHP.ini文件的配置項。
a、會導致在當前伺服器環境下所有PHP文件都受其影響。
b、如果代碼更換伺服器,會導致配置文件全部失效,需要重新配置。
所以實際開發過程中,並不推薦使用此方式!!
②在代碼中使用ini_set函數,動態的修改php.ini文件的配置項;(get為獲取配置項)
①display_errors:開啟或關閉所有錯誤級別報告;
可選值:1/On表示開啟所有錯誤報告功能; 0/Off表示關閉所有報告;
默認開啟,而且強烈建議開啟!!
代碼實例:
ini_set("display_errors","0");---->關閉錯誤報告功能;
②error_reporting:設置那些錯誤可以進行報告; 有兩個函數可以設置:ini_set和error_reporting;
代碼示例:
ini_set("error_reporting",E_ALL);報告所有級別;
error_reporting("E_ALL & ~E_NOTICE");不報告notice級別,其他均正常報告;
3、使用錯誤日誌,記錄出現的錯誤;
①使用日誌文件記錄:
使用error_log函數將錯誤信息輸出到日誌文件中。默認的日誌文件在wamp中的log文件夾下,php_error.log文件;
代碼示例:
ini_set("error_log","E:/text.txt");//設置日誌文件地址;
error_log("出錯了!!!");//列印一句錯誤信息;
error_log("這是一個PHP錯誤",3,"E:/textLog.text");//直接將錯誤信息列印到指定文件中;
②寫進Windows系統日誌中:
代碼示例:
ini_set("error_log", "syslog");//設置日誌記錄到系統日誌;
error_log("系統日誌出錯");//使用日誌報錯時,將自動進入系統日誌;
4、trigger_error:自定義一個錯誤;會像系統錯誤一樣。產生報錯。
參數①:錯誤的信息內容;
參數②:錯誤的級別。常選E_USER_NOTICE E_USER_WARRING E_USER_ERRORS;
5、自定義錯誤處理函數:
①聲明一個錯誤處理函數function func{}
②使用set_error_handler("func");設置,當文件出現錯誤時,不再使用系統自帶的錯誤提示功能,而是調用我們自定義的函數。
所以可以在聲明函數時,接受錯誤信息,具體處理。
實例展示:
ini_set("display_errors", 1);
$errMessage="";
function errorHandler($type,$message,$file,$line){
global $errMessage;
switch ($type) {
case E_NOTICE:
$errMessage .= "發生了沒有什麼卵用的小bug,就不用處理了
";
break;
case E_WARNING:
$errMessage .= "出錯啦!!!";
$errMessage .= "錯誤類型是:{$type}";
$errMessage .= "錯誤信息是:{$message}";
$errMessage .= "錯誤發生的文件是:{$file}";
$errMessage .= "錯誤發生的行號是:{$line}";
$errMessage .= "
";
break;
case E_ERROR:
echo "";
break;
default:
echo "";
break;
}
}
set_error_handler("errorHandler");
//ini_set("error_reporting",E_ALL);
//error_reporting(E_ALL & ~E_NOTICE);
ini_set("error_log", "syslog");
error_log("這是一個PHP錯誤",3,"E:/textLog.text");
echo $num;
//trigger_error("22222222",E_USER_NOTICE);//自定義一個錯誤,上述函數未接受,因此會進入default;
echo "11111";
echo "-------------------------------------------------";
echo $errMessage;
本期分享就到這裡,下期再見。覺得內容對你有所幫助的朋友請點推薦,歡迎大家在評論下方評論區與博主互動,謝謝大家!
未完,待續。。。
更多精彩內容,敬請關注 Q的前端世界的技術博客。
※vue2.0引入騰訊地圖
※jsPlumb之流程圖項目總結及實例
※geotrellis使用(二十九)遷移geotrellis至1.1.1版
※14:40-15:00博客站點web伺服器雪崩似的CPU 100%
TAG:達人科技 |
※配置錯誤的Tor站點通過SSL證書暴露公共IP地址
※HTTP狀態碼介紹,以及HTTP錯誤代碼的故障修復?
※NVIDIA新驅動:改善3款遊戲表現 修復G-SNYC錯誤
※NVIDIA推新驅動:改善3款遊戲表現,修復G-SNYC錯誤
※CoinGeek聲明:更改BCH協議是BCH獲得大規模採用的錯誤方式
※CPU-Z 1.85版發布:修復WinXP初始化錯誤
※用戶反映部分2018款MBP和iMac Pro出現內核錯誤問題
※Google Play出現DF-DFERH-01錯誤的分析與修復
※微軟開始修復WIN10 Mobile用戶在Edge上無法打開PDF文件的錯誤
※RFC7807:API錯誤處理最佳實踐
※Facebook推出API限制,公開屏蔽錯誤
※Raf Simons的改造是個「錯誤」?Calvin Klein表現疲軟令母公司 PVH集團最新季度表現不及預期
※Perl 錯誤處理
※XML DOM 解析器錯誤
※Nvidia宣布取消GPP夥伴計劃,稱遭到錯誤解讀
※谷歌要「滅掉」URL|暗網站點配置錯誤暴露公共IP地址|美國DHS計劃更新網路事件報告指標
※Sierra補充更新解決了MBP爆音和內核錯誤
※外媒:蘋果最大的錯誤是放棄iPhone SE
※取消iPhone SE 是蘋果最近幾年犯下的最大錯誤
※修復:Windows 10計算機上的HTTP錯誤400