亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP 錯誤處理

2020-03-22 18:17:51
字體:
來源:轉載
供稿:網友

在 PHP 中,默認的錯誤處理很簡單。一條消息會被發送到瀏覽器,這條消息帶有文件名、行號以及一條描述錯誤的消息。


在創建腳本和 web html' target='_blank'>應用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業,也為安全風險敞開了大門。

本教程介紹了 PHP 中一些最為重要的錯誤檢測方法。

我們將為您講解不同的錯誤處理方法:

簡單的 die() 語句 自定義錯誤和錯誤觸發器
Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in C:/webfolder/test.php on line 2

為了避免用戶獲得類似上面的錯誤消息,我們在訪問文件之前檢測該文件是否存在:

 ?phpif(!file_exists( welcome.txt )) die( File not found  $file=fopen( welcome.txt , r ? 

現在,假如文件不存在,您會得到類似這樣的錯誤消息:

File not found

比起之前的代碼,上面的代碼更有效,這是由于它采用了一個簡單的錯誤處理機制在錯誤之后終止了腳本。

不過,簡單地終止腳本并不總是恰當的方式。讓我們研究一下用于處理錯誤的備選的 PHP 函數。


創建一個自定義的錯誤處理器非常簡單。我們很簡單地創建了一個專用函數,可以在 PHP 中發生錯誤時調用該函數。

該函數必須有能力處理至少兩個參數 (error level 和 error message),但是可以接受最多五個參數(可選的:file, line-number 以及 error context):

error_function(error_level,error_message,error_file,error_line,error_context)

必需。為用戶定義的錯誤規定錯誤報告級別。必須是一個值數。

參見下面的表格:錯誤報告級別。


E_USER_ERROR致命的用戶生成的錯誤。這類似于程序員使用 PHP 函數 trigger_error() 設置的 E_ERROR。
E_USER_WARNING非致命的用戶生成的警告。這類似于程序員使用 PHP 函數 trigger_error() 設置的 E_WARNING。
E_USER_NOTICE用戶生成的通知。這類似于程序員使用 PHP 函數 trigger_error() 設置的 E_NOTICE。
E_RECOVERABLE_ERROR可捕獲的致命錯誤。類似 E_ERROR,但可被用戶定義的處理程序捕獲。(參見 set_error_handler())

所有錯誤和警告,除級別 E_STRICT 以外。

(在 PHP 6.0,E_STRICT 是 E_ALL 的一部分)


上面的代碼是一個簡單的錯誤處理函數。當它被觸發時,它會取得錯誤級別和錯誤消息。然后它會輸出錯誤級別和消息,并終止腳本。

現在,我們已經創建了一個錯誤處理函數,我們需要確定在何時觸發該函數。


PHP 的默認錯誤處理程序是內建的錯誤處理程序。我們打算把上面的函數改造為腳本運行期間的默認錯誤處理程序。

可以修改錯誤處理程序,使其僅應用到某些錯誤,這樣腳本就可以不同的方式來處理不同的錯誤。不過,在本例中,我們打算針對所有錯誤來使用我們的自定義錯誤處理程序:

set_error_handler( customError 

由于我們希望我們的自定義函數來處理所有錯誤,set_error_handler() 僅需要一個參數,可以添加第二個參數來規定錯誤級別。

通過嘗試輸出不存在的變量,來測試這個錯誤處理程序:

 ?php//error handler functionfunction customError($errno, $errstr) echo b Error: /b [$errno] $errstr //set error handlerset_error_handler( customError //trigger errorecho($test);? 

以上代碼的輸出應該類似這樣:

Error: [8] Undefined variable: test

在腳本中用戶輸入數據的位置,當用戶的輸入無效時觸發錯誤的很有用的。在 PHP 中,這個任務由 trigger_error() 完成。

在本例中,如果 test 變量大于 1 ,就會發生錯誤:

 ?php$test=2;if ($test 1)trigger_error( Value must be 1 or below ? 

以上代碼的輸出應該類似這樣:

Notice: Value must be 1 or belowin C:/webfolder/test.php on line 6

您可以在腳本中任何位置觸發錯誤,通過添加的第二個參數,您能夠規定所觸發的錯誤級別。

可能的錯誤類型:E_USER_ERROR - 致命的用戶生成的 run-time 錯誤。錯誤無法恢復。腳本執行被中斷。E_USER_WARNING - 非致命的用戶生成的 run-time 警告。腳本執行不被中斷。E_USER_NOTICE - 默認。用戶生成的 run-time 通知。腳本發現了可能的錯誤,也有可能在腳本運行正常時發生。

在本例中,如果 test 變量大于 1 ,則發生 E_USER_WARNING 錯誤。如果發生了 E_USER_WARNING,我們將使用我們的自定義錯誤處理程序并結束腳本:

 ?php//error handler functionfunction customError($errno, $errstr) echo b Error: /b [$errno] $errstr br /  echo Ending Script  die();//set error handlerset_error_handler( customError ,E_USER_WARNING);//trigger error$test=2;if ($test 1) trigger_error( Value must be 1 or below ,E_USER_WARNING);

以上代碼的輸出應該類似這樣:

Error: [512] Value must be 1 or belowEnding Script

現在,我們已經學習了如何創建自己的 error,以及如何觸發它們,現在我們研究一下錯誤記錄。


默認地,根據在 php.ini 中的 error_log 配置,PHP 向服務器的錯誤記錄系統或文件發送錯誤記錄。通過使用 error_log() 函數,您可以向指定的文件或遠程目的地發送錯誤記錄。

通過電子郵件向您自己發送錯誤消息,是一種獲得指定錯誤的通知的好辦法。

通過 E-Mail 發送錯誤消息

在下面的例子中,如果特定的錯誤發生,我們將發送帶有錯誤消息的電子郵件,并結束腳本:

 ?php//error handler functionfunction customError($errno, $errstr) echo b Error: /b [$errno] $errstr br /  echo Webmaster has been notified  error_log( Error: [$errno] $errstr ,1, someone@example.com , From: webmaster@example.com //set error handlerset_error_handler( customError ,E_USER_WARNING);//trigger error$test=2;if ($test 1) trigger_error( Value must be 1 or below ,E_USER_WARNING);? 

以上代碼的輸出應該類似這樣:

Error: [512] Value must be 1 or belowWebmaster has been notified

接收自以上代碼的郵件類似這樣:

Error: [512] Value must be 1 or below

這個方法不適合所有的錯誤。常規錯誤應當通過使用默認的 PHP 記錄系統在服務器上進行記錄。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频不卡| 精品欧美一区二区三区| 日本不卡免费高清视频| 久久99精品视频一区97| 最好看的2019的中文字幕视频| 亚洲伊人一本大道中文字幕| 国产精品视频免费在线观看| 大荫蒂欧美视频另类xxxx| 久久视频在线看| 奇门遁甲1982国语版免费观看高清| 日韩网站在线观看| 国内精品美女av在线播放| 26uuu另类亚洲欧美日本一| 久久躁日日躁aaaaxxxx| 欧美在线日韩在线| 亚洲国产欧美在线成人app| 欧美精品久久一区二区| 国外成人免费在线播放| 91影视免费在线观看| 日韩亚洲成人av在线| 国产亚洲免费的视频看| 亚洲精品视频久久| 国产欧美精品日韩| 日本在线精品视频| 亚洲人成电影在线观看天堂色| 亚洲国产欧美一区二区三区久久| 亚洲欧洲xxxx| 国产精品网址在线| 欧美激情视频在线免费观看 欧美视频免费一| 最新国产成人av网站网址麻豆| 性色av一区二区三区免费| 成人疯狂猛交xxx| 成人免费自拍视频| 久久久这里只有精品视频| 精品福利樱桃av导航| 国产午夜精品美女视频明星a级| 欧美三级免费观看| 福利视频一区二区| 国产精品久久久久影院日本| 日韩美女av在线| 激情懂色av一区av二区av| 日韩女在线观看| 欧美亚洲一区在线| 最近2019中文字幕在线高清| 精品久久久在线观看| 国产一区二区三区四区福利| 日韩精品在线视频美女| 最近日韩中文字幕中文| 色av中文字幕一区| 91精品国产高清| 欧美国产日本在线| 午夜美女久久久久爽久久| 国产剧情久久久久久| 国自产精品手机在线观看视频| 久久久亚洲精选| 性欧美xxxx视频在线观看| 亚洲成色777777女色窝| 亚洲国产精品成人一区二区| 日本19禁啪啪免费观看www| 国产精品777| 精品偷拍一区二区三区在线看| 亚洲天天在线日亚洲洲精| 久久久国产一区二区| 一区二区在线视频| 日本精品久久电影| 国产精品免费视频xxxx| 色噜噜国产精品视频一区二区| 亚洲国产精品成人av| 久久视频在线观看免费| 欧美做爰性生交视频| 97**国产露脸精品国产| 欧洲日韩成人av| 亚洲网站在线看| 在线播放国产一区中文字幕剧情欧美| 日韩美女主播视频| 日韩在线高清视频| 伊人伊人伊人久久| 欧美国产中文字幕| 久久综合久中文字幕青草| 国产在线一区二区三区| 亚洲女人天堂网| 色偷偷噜噜噜亚洲男人的天堂| 日韩av免费在线播放| 亚洲香蕉成人av网站在线观看| 日本精品久久电影| 欧美日韩精品在线观看| 亚洲美女福利视频网站| 国产成人精品久久二区二区91| 精品久久久久久久大神国产| 黑丝美女久久久| 国产精品亚洲自拍| 播播国产欧美激情| 久久久精品久久久久| 亚洲欧美中文字幕在线一区| 欧美亚洲日本黄色| 亚洲成人激情图| 亚洲成人黄色网址| 亚洲国产精品电影在线观看| 狠狠做深爱婷婷久久综合一区| 国产一区玩具在线观看| 91欧美精品成人综合在线观看| 久久久久久综合网天天| 国产精品亚洲激情| 91精品在线看| 久久精品中文字幕| 91精品视频免费观看| 欧美亚洲国产精品| 国产精品99导航| 欧美精品情趣视频| 亚洲综合小说区| 日韩中文字幕网站| 国产亚洲欧洲高清一区| 91国内产香蕉| 国产日本欧美一区二区三区| 亚洲一区二区三区成人在线视频精品| 亚洲成人亚洲激情| 亚洲精品国偷自产在线99热| 久久精品中文字幕免费mv| 国产精品一区二区性色av| 91美女片黄在线观看游戏| 欧美另类极品videosbestfree| 九九精品在线视频| 青草热久免费精品视频| 日韩中文字幕国产精品| 亚洲高清久久网| 啊v视频在线一区二区三区| 91高清视频免费观看| 狠狠色狠狠色综合日日五| 亚洲电影免费观看高清完整版在线| 少妇高潮久久77777| 国语自产精品视频在线看抢先版图片| 亚洲欧美激情四射在线日| 亚洲欧美中文在线视频| 伊人精品在线观看| 欧美另类极品videosbestfree| 欧美精品第一页在线播放| 国产成人激情小视频| 日韩精品免费视频| 国产91精品最新在线播放| 久久久久久免费精品| 国产成人鲁鲁免费视频a| 亚洲国内精品在线| 亚洲成人a**站| 久久伊人色综合| 欧美极品少妇xxxxⅹ免费视频| 亚洲欧美精品在线| 亚洲午夜未删减在线观看| 亚洲新声在线观看| 亚洲精品视频免费| 久久理论片午夜琪琪电影网| 国产精品自拍小视频| 成人黄色免费看| 精品日本高清在线播放| 欧洲一区二区视频| 国产精品美女视频网站| 亚洲国产精品热久久| 亚洲美腿欧美激情另类| 国产国产精品人在线视| 日韩在线视频免费观看高清中文| 久久噜噜噜精品国产亚洲综合| 欧美贵妇videos办公室| 欧美黄色性视频| 国产精品丝袜一区二区三区| 久久亚洲精品中文字幕冲田杏梨|