中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中的錯誤處理函數有哪些

發布時間:2022-03-18 15:36:10 來源:億速云 閱讀:194 作者:iii 欄目:大數據

這篇“PHP中的錯誤處理函數有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“PHP中的錯誤處理函數有哪些”文章吧。

error_reporting()

這個函數相必大家多少都會接觸過,就是定義 PHP 在運行時的錯誤處理機制。就像我們在進行調試時,往往需要設置一個 E_ALL 來顯示全部的錯誤信息。

error_reporting(E_ALL);

這個函數只能定義為 PHP 內部提供的那些錯誤處理的常量,包括:

  • Fatal Error:致命錯誤(腳本終止運行)

    • E_ERROR         // 致命的運行錯誤,錯誤無法恢復,暫停執行腳本
    • E_CORE_ERROR    // PHP啟動時初始化過程中的致命錯誤
    • E_COMPILE_ERROR // 編譯時致命性錯,就像由Zend腳本引擎生成了一個E_ERROR
    • E_USER_ERROR    // 自定義錯誤消息。像用PHP函數trigger_error(錯誤類型設置為:E_USER_ERROR)
  • Parse Error:編譯時解析錯誤,語法錯誤(腳本終止運行)

    • E_PARSE  //編譯時的語法解析錯誤
  • Warning Error:警告錯誤(僅給出提示信息,腳本不終止運行)

    • E_WARNING         // 運行時警告 (非致命錯誤)。
    • E_CORE_WARNING    // PHP初始化啟動過程中發生的警告 (非致命錯誤) 。
    • E_COMPILE_WARNING // 編譯警告
    • E_USER_WARNING    // 用戶產生的警告信息
  • Notice Error:通知錯誤(僅給出通知信息,腳本不終止運行)

    • E_NOTICE      // 運行時通知。表示腳本遇到可能會表現為錯誤的情況.
    • E_USER_NOTICE // 用戶產生的通知信息。

當然,這個函數也是可以通過 php.ini 文件進行全局配置的,具體的配置方式這里不再贅述。包括 php.ini 文件的注釋中也會有詳細的說明。

error_get_last()

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_clear_last

從名字就可以看出,這個函數的作用是清除最后一次的錯誤信息。也就是說,如果在發生錯誤的代碼之后調用了這個函數, error_get_last() 就不會打印任何內容了。

echo $a; // Notice: Undefined variable: a
error_clear_last();
print_r(error_get_last()); // 不會輸出
  

error_log

最后我們來看看錯誤日志記錄的一個函數。它不僅可以將日志記錄到日志文件中,還可以直接發郵件。

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,錯誤信息內容,文本形式
  • $message_type,錯誤發送到何處,默認0系統日志文件,1為發送到 $destination 定義的郵件地址,3發送到 $destination 定義的郵件地址并且 $message 不會被當作新的一行,4發送到SAPI的日志處理程序中
  • $destination,一般為郵件地址
  • $extra_headers,額外的郵件頭,在 $message_type 為1時有用

這個函數需要注意的一點是, $message 內容不能有 null 或者其他可能截斷字符的符號。所以我們的測試代碼中,發送 error_get_last() 內容時我們不僅給他轉成了 json ,而且還加了一層 base64 編碼,這樣才能保證內容的正常發送。

以上就是關于“PHP中的錯誤處理函數有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

鄄城县| 博罗县| 白朗县| 广宁县| 玉林市| 西贡区| 平泉县| 桑日县| 张家川| 贵阳市| 奇台县| 西贡区| 溧阳市| 奉化市| 鹤庆县| 兴化市| 盐亭县| 通海县| 鲁甸县| 连平县| 巨野县| 宣化县| 德格县| 和林格尔县| 南投市| 大厂| 突泉县| 奉贤区| 临海市| 自治县| 台中市| 邹城市| 天气| 巧家县| 河间市| 新营市| 嘉定区| 滨州市| 绿春县| 苗栗市| 通州区|