部落格推薦:
php error_log記錄日誌的使用方法和配置:
手冊:
php的錯誤跟異常區別:
學會以後需要:
主要作用:自己動手試試哦!1、記錄日誌到指令檔案
2、強錯誤資訊傳送到郵箱之中
error_reporting ;將會向php報告發生的每個錯誤
display_errors ;不顯示滿足上條 指令所定義規則的所有錯誤報告
log_errors ;決定日誌語句記錄的位置
log_errors_max_len ;設定每個日誌項的最大長度
error_log ;指定產生的 錯誤報告寫入的日誌檔案位置
模擬錯誤 + 模擬異常 + 傳送email + 線上環境對普通使用者隱藏錯誤資訊
1、php錯誤型別和相應例子:
分號缺失,致命錯誤。
直接註冊在根命名空間的error類重名會出現致命錯誤,直接指令碼終止,
如果在錯誤出現之前都沒註冊shutdown函式的話,直接給你乙個error500,很難受
2、自己常用的錯誤報告處理類:
thinkphp的寫法(方然仿照的,真實的tp5.0錯誤處理機制更加細分,sql exception 還有 快取的exception 等等統統繼承基礎類擴充套件出了乙個類(雖然跟沒擴充套件一樣,但是這個oop思想值得借鑑)):
自己用的簡單的錯誤處理:
<?php /**如果上面的trigger_error的時候後面少了乙個;那麼直接就是500,錯誤,顯示伺服器內部錯誤,* 錯誤處理機制
* @author xu <[email protected]> */
class
errorcatch
/*** 錯誤處理
* @access public
* @param integer $errno 錯誤編號
* @param integer $errstr 詳細錯誤資訊
* @param string $errfile 出錯的檔案
* @param integer $errline 出錯行號
* @param array $errcontext 出錯上下文
* @return void
* @throws errorexception
*/public
/*** 異常處理
* @access public
* @param exception $e 異常物件
* @return void
*/public
static
/*** 異常中止處理
* @access public
* @return void
*/public
static
}/**
* 確定錯誤型別是否致命
* @access protected
* @param int $type 錯誤型別
* @return bool
*/protected
static
function isfatal($type)
}//註冊自定義錯誤處理
errorcatch::register();
//模擬丟擲異常
trigger_error("
cannot divide by zero
", e_user_error);
不能被shutdown函式捕獲,
像這樣,已經註冊了函式了,就可以捕獲到錯誤資訊:
捕獲異常: syntax error, unexpected end of file一些常犯的錯誤及其報錯資訊:
<?phpforeach ( as
$k => $v)//
no any msg catch
array_merge([1,2,3],'');
//warning: array_merge(): argument #2 is not an array in d:\webserver\www\test.php on line 8
if($a)//
notice: undefined variable: a in d:\webserver\www\test.php on line 13
" select * from user where id in ()";
//general error: 936 ocistmtexecute: ora-00936: 缺失表示式 pdo exception in ()後面表示式不能為空不能為array
if(in_array("a", $a));
//notice: undefined variable: a in d:\webserver\www\test.php on line 24
// warning: in_array() expects parameter 2 to be array, null given in d:\webserver\www\test.php on line 24
echo 22
//parse error: syntax error, unexpected end of file, expecting ',' or ';' in d:\webserver\www\test.php on line 27
PHP 錯誤處理機制
在日常的專案開發過程中,總是會出現一些我們意想不到的異常錯誤,如果我們對此沒有進行相對完善的處理,那麼程式看上去也很不專業,也很可能就會成為別人攻擊系統的有效資訊 有些錯誤異常會終止指令碼執行,這個時候如果沒有一些錯誤提示資訊的話,那麼我們只能從頭開始看 了,要知道專案中成百上千行的 對我們來說是件...
PHP 錯誤處理機制
在日常的專案開發過程中,總是會出現一些我們意想不到的異常錯誤,如果我們對此沒有進行相對完善的處理,那麼程式看上去也很不專業,也很可能就會成為別人攻擊系統的有效資訊 有些錯誤異常會終止指令碼執行,這個時候如果沒有一些錯誤提示資訊的話,那麼我們只能從頭開始看 了,要知道專案中成百上千行的 對我們來說是件...
php中錯誤處理機制
php中,異常處理機制是有限的,無法自動丟擲異常,必須手動進行,並且內建異常有限。php把許多異常看作錯誤,這樣就可以把這些異常想錯誤一樣用set error handler接管,進而主動丟擲異常。比如以下warning型別的錯誤是捕獲不到的 warning division by zero in ...