詳解PHP錯誤日志的獲取方法
在PHP中錯誤日志的獲取方法有很多種,下面我給大家簡單介紹下遇到此類問題如何解決,下面通過代碼給大家展示下,希望能夠幫助到大家。
<?php error_reporting (0); register_shutdown_function($err = 'my_error_handler') OR set_error_handler($err,E_ALL); // 同時注冊兩個函數(shù). // 函數(shù)參數(shù)錯誤 $original = unserialize ( array(423142,2134234)); // 不可對0除 echo 1/0; // 不存在的數(shù)組索引 echo $_GET['aa']; // 不存在的常量 PHP_E; // 不存在的變量 echo $var; // 函數(shù)參數(shù)錯誤 strlen(array(2434)); // 函數(shù)參數(shù)錯誤 md5(array(1)); // 用戶自定義錯誤 trigger_error('safdds',E_USER_NOTICE); // 不存在的函數(shù) php中斷 // tes(); // 不存在的方法 php中斷 $ts = new afsd(); function my_error_handler($errno=0 ,$errstr=0 , $errfile=0 ,$errline=0){ if($errno && $errfile){ if(true){ $earr = array(); $earr['type'] = $errno; $earr['message'] = $errstr; $earr['file'] = $errfile; $earr['line'] = $errline; } }else{ $earr = error_get_last(); } echo '<pre>'; print_r($earr); return array(); }
對于php錯誤, 我們一定要認識清楚, 類型分幾種, 什么時候觸發(fā), 返回值是什么.
如果不區(qū)分警告, 錯誤, 建議,提示等細類型種類, 那我們可以理解php錯誤類型共有兩種:
一種是強制中斷程序錯誤. 如錯誤, 方法不存在等. 內(nèi)存不足, 超時
一種是非中斷式錯誤. 如警告, 提示這些
其中獲取中斷程序錯誤需要使用register_shutdown_function函數(shù), 注冊一個內(nèi)存函數(shù), 然后里面取得錯誤信息, 這種方法僅能獲取到首次的錯誤行, 如多個不存在的函數(shù)時, 它只能獲取到首次的那個錯誤. 這其實也有好處, 你修復一個, 它就會移至下一個.
非中斷式錯誤, 如果用:register_shutdown_function, 那會變得異常難操作, 僅僅能獲取首次的提示或者警告, 這時我們需要set_error_handler, 每一次觸有error level constants, 都會調(diào)用錯誤函數(shù)一次, 也就可以在里面獲取錯誤日志. 不過此函數(shù)會承接 error_get_last 函數(shù), 所以你會發(fā)現(xiàn)error_get_last返回為空, 全部由參數(shù)傳入了.
兩個函數(shù)一起運用, 即可獲取到程序的99%的錯誤, 這對于php程序來說, 算是雪中送打火機了.
試試運行上面的示例吧.
通過代碼和文字相結合對PHP中錯誤日志的獲取方法的整理,希望對大家在今后的工作中遇到此類問題有所幫助。
- PHP配置把錯誤日志以郵件方式發(fā)送方法(Windows系統(tǒng))
- PHP.ini中配置屏蔽錯誤信息顯示和保存錯誤日志的例子
- 實現(xiàn)Nginx中使用PHP-FPM時記錄PHP錯誤日志的配置方法
- PHP中把錯誤日志保存在系統(tǒng)日志中(Windows系統(tǒng))
- 淺談php自定義錯誤日志
- 記錄PHP錯誤日志 display_errors與log_errors的區(qū)別
- 無法在發(fā)生錯誤時創(chuàng)建會話,請檢查 PHP 或網(wǎng)站服務器日志,并正確配置 PHP 安裝(win+linux)
- 無法在發(fā)生錯誤時創(chuàng)建會話,請檢查 PHP 或網(wǎng)站服務器日志,并正確配置 PHP 安裝最快的解決辦法
- 詳解PHP的Yii框架中日志的相關配置及使用
- nginx php-fpm中啟用慢日志配置(用于檢測執(zhí)行較慢的PHP腳本)
- php錯誤日志簡單配置方法
相關文章
jquery+php實現(xiàn)導出datatables插件數(shù)據(jù)到excel的方法
這篇文章主要介紹了jquery+php實現(xiàn)導出datatables插件數(shù)據(jù)到excel的方法,實例分析了jquery插件datatables的使用方法與php導出datatables數(shù)據(jù)到Excel的技巧,需要的朋友可以參考下2015-07-07PHP自定義函數(shù)判斷是否為Get、Post及Ajax提交的方法
這篇文章主要介紹了PHP自定義函數(shù)判斷是否為Get、Post及Ajax提交的方法,涉及php服務器預定義變量$_SERVER及字符串相關操作技巧,需要的朋友可以參考下2017-07-07