您好,登錄后才能下訂單哦!
這篇“PHP中的錯誤處理函數有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“PHP中的錯誤處理函數有哪些”文章吧。
這個函數相必大家多少都會接觸過,就是定義 PHP 在運行時的錯誤處理機制。就像我們在進行調試時,往往需要設置一個 E_ALL 來顯示全部的錯誤信息。
error_reporting(E_ALL);
這個函數只能定義為 PHP 內部提供的那些錯誤處理的常量,包括:
Fatal Error:致命錯誤(腳本終止運行)
Parse Error:編譯時解析錯誤,語法錯誤(腳本終止運行)
Warning Error:警告錯誤(僅給出提示信息,腳本不終止運行)
Notice Error:通知錯誤(僅給出通知信息,腳本不終止運行)
當然,這個函數也是可以通過 php.ini 文件進行全局配置的,具體的配置方式這里不再贅述。包括 php.ini 文件的注釋中也會有詳細的說明。
error_get_last() 函數則是指的返回我們最后一次的錯誤信息。它返回的是一個數組,里面會包含錯誤信息的"type"、"message"、"file"、"line"信息,方便我們查看錯誤的具體發生位置及內容。
echo $a; // Notice: Undefined variable: a
print_r(error_get_last());
// Array
// (
// [type] => 8
// [message] => Undefined variable: a
// [file] => /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/一些簡單的錯誤處理函數(一).php
// [line] => 5
// )
echo $b;
print_r(error_get_last()); // 不會打印$a的問題
// Array
// (
// [type] => 8
// [message] => Undefined variable: b
// [file] => /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/一些簡單的錯誤處理函數(一).php
// [line] => 17
// )
echo $a;
echo $b;
print_r(error_get_last()); // 同樣只會打印$b的問題
需要注意的是,它只返回最后一個錯誤的信息。比如上面示例中最后一段中的 echo $a; 和 echo $b; 都會產生錯誤,但最終打印出來的只是 echo $b; 所產生的錯誤信息。
從名字就可以看出,這個函數的作用是清除最后一次的錯誤信息。也就是說,如果在發生錯誤的代碼之后調用了這個函數, error_get_last() 就不會打印任何內容了。
echo $a; // Notice: Undefined variable: a
error_clear_last();
print_r(error_get_last()); // 不會輸出
最后我們來看看錯誤日志記錄的一個函數。它不僅可以將日志記錄到日志文件中,還可以直接發郵件。
error_log("Test Error One!");
// php.ini 中定義的 error_log 文件
// [22-Apr-2020 09:04:34 Asia/Shanghai] Test Error One!
error_log("Test Error One!", 1, "423257356@qq.com");
echo $a;
error_log(base64_encode(json_encode(error_get_last())), 1, "423257356@qq.com");
第一段我們只有一個參數,所以錯誤信息將直接記錄到 php.ini 文件中所定義的錯誤日志中。而后面兩段則是將內容發送到一個郵箱中。
這個函數的聲明形式是:
error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) : bool
這個函數需要注意的一點是, $message 內容不能有 null 或者其他可能截斷字符的符號。所以我們的測試代碼中,發送 error_get_last() 內容時我們不僅給他轉成了 json ,而且還加了一層 base64 編碼,這樣才能保證內容的正常發送。
以上就是關于“PHP中的錯誤處理函數有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。