中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

PHP的全局錯誤處理詳解
來源:易賢網 閱讀:1294 次 日期:2016-08-26 14:42:19
溫馨提示:易賢網小編為您整理了“PHP的全局錯誤處理詳解”,方便廣大網友查閱!

本文目的

PHP的全局錯誤處理,在開發項目的時候很有用,可以幫助開發者快速定位一些問題,提高工作效率。默認情況下,全局錯誤會直接輸出,但是最近開發時使用的一個框架庫對全局錯誤處理進行了設定,導致很多錯誤信息沒有輸出,在定位問題上有一定的耗時。所以,研究了一下此庫的實現,發現它設定了error_reporting和set_error_handler,導致此現象。現在記錄一下這兩個函數的用法,作為備忘錄。

背景

PHP沒有類型檢測,開發人員比較容易輸入錯誤單詞,引起致命錯誤,最終導致腳本停止執行。如果這個時候,沒有得到任何錯誤消息,那么會是一件很痛苦的事情。你不得不從腳本的第一行代碼開始調試,在成千上萬行的代碼中不斷的print或者echo,直到定位到這個輸錯的單詞。然后,有不得不原路返回,將先前添加的print或echo全部刪除。這時一件及其枯燥乏味的工作。

一般情況

正常情況下,php會將致命錯誤直接輸出,會將錯誤的出處(文件地址,行號)和原因等輸出,這樣,開發著可以很方便的定位到問題。

但是有些時候,可能由于php.ini的設置問題,可能是第三方框架配置的問題,導致這些信息沒有輸出,那么此時,必須學會自己設置相關參數,輸出這些錯誤信息,幫助快速定位問題。

error_reporting

error_reporting是一個php的全局配置參數,在php.ini中。用于配置錯誤輸出級別,參數是比特位,可以用來設置錯誤輸出的級別,下面是從php.ini中copy出來的信息:

; error_reporting is a bit-field. Or each number up to get desired error

; reporting level

; E_ALL - All errors and warnings (doesn't include E_STRICT)

; E_ERROR - fatal run-time errors

; E_RECOVERABLE_ERROR - almost fatal run-time errors

; E_WARNING - run-time warnings (non-fatal errors)

; E_PARSE - compile-time parse errors

; E_NOTICE - run-time notices (these are warnings which often result

; from a bug in your code, but it's possible that it was

; intentional (e.g., using an uninitialized variable and

; relying on the fact it's automatically initialized to an

; empty string)

; E_STRICT - run-time notices, enable to have PHP suggest changes

; to your code which will ensure the best interoperability

; and forward compatibility of your code

; E_CORE_ERROR - fatal errors that occur during PHP's initial startup

; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's

; initial startup

; E_COMPILE_ERROR - fatal compile-time errors

; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)

; E_USER_ERROR - user-generated error message

; E_USER_WARNING - user-generated warning message

; E_USER_NOTICE - user-generated notice message

;

; Examples:

;

; - Show all errors, except for notices and coding standards warnings

;

;error_reporting = E_ALL & ~E_NOTICE

;

; - Show all errors, except for notices

;

;error_reporting = E_ALL & ~E_NOTICE | E_STRICT

;

; - Show only errors

;

;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR

;

; - Show all errors except for notices and coding standards warnings

;

error_reporting = E_ALL & ~E_NOTICE

默認情況下,php會輸出所有錯誤信息,除了notice。同樣,php標準函數中提供了名稱相同的函數error_reporting(int $level),用于在php腳本中,完成同樣的功能。這樣將不會影響其他程序。值得注意的是,$level為0的時候是關閉錯誤輸出,也就是任何錯誤都不會輸出。

set_error_handler

php的默認錯誤處理是將消息輸出。但是,有時候需要定義一些其他操作,這時就需要自定義錯誤處理函數。php提供內置函數set_error_handler可以幫助我們注冊自己的錯誤處理函數。函數原型如下:

mixed set_error_handler ( callback $error_handler [, int $error_types = E_ALL | E_STRICT ] )

值得注意的是,即使注冊了錯誤處理函數,默認的行為仍然會執行,也就是錯誤出現時,仍然會輸出錯誤信息,所以需要在程序中顯示的將錯誤級別設置為0,然后在注冊自己的的錯誤處理函數。這種方式,在生產環境下,尤其重要,因為即時出錯,敏感內部錯誤信息也不會暴露給潛在的惡意用戶。還有很重要的一點需要指出,自定義錯誤處理函數不能處理fatal error(比如編譯錯誤)。下面是一個使用自定義錯誤處理函數的列子:

<?php

error_reporting (0);

function error_handler ($error_level, $error_message, $file, $line) {

  $EXIT = FALSE;

  switch ($error_level) {

    case E_NOTICE:

    case E_USER_NOTICE:

      $error_type = 'Notice';

      break;

    case E_WARNING:

    case E_USER_WARNING:

      $error_type = 'Warning';

      break;

    case E_ERROR:

    case E_USER_ERROR:

      $error_type = 'Fatal Error';

      $EXIT = TRUE;

      break;

    default:

      $error_type = 'Unknown';

      $EXIT = TRUE;

      break;

  }

  printf ("%s: %s in %s on line %d\n", $error_type, $error_message, $file, $line);

  if ($EXIT) {

    die();

  }

}

set_error_handler ('error_handler');

//new NonExist();

echo $novar;

echo 3/0;

trigger_error ('Trigger a fatal error', E_USER_ERROR);

new NonExist();

?>

執行此腳本可以得到下面的輸出:

Notice: Undefined variable: novar in /your/php_demo_file.php on line 40

Warning: Division by zero in /your/php_demo_file.php on line 41

Fatal Error: Trigger a fatal error in /your/php_demo_file.php on line 42

可以看到,最后的“new NoExistClass()”的異常,沒有被自定義的錯誤處理函數捕獲。

最后,捎帶提一下,set_exception_handler注冊頂層的異常處理,在web一用中,可以設定一下,然后統一的跳轉到錯誤處理頁面。

更多信息請查看網絡編程
易賢網手機網站地址:PHP的全局錯誤處理詳解
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美日韩的一区二区| 日本道精品一区二区三区| 成人午夜电影小说| 中国av一区二区三区| 国产99久久久久久免费看农村| 久久久蜜臀国产一区二区| 国产a级毛片一区| 欧美国产日韩一二三区| 色哦色哦哦色天天综合| 免费高清不卡av| 国产精品你懂的| 欧美特级限制片免费在线观看| 午夜在线电影亚洲一区| 欧美国产一区在线| 欧美色图第一页| 国产激情视频一区二区三区欧美| 亚洲激情图片一区| 国产性色一区二区| 欧美日韩国产高清一区二区| 韩日av一区二区| 亚洲超碰97人人做人人爱| 国产精品久久福利| 日韩欧美专区在线| 色偷偷88欧美精品久久久| 精品一区二区三区视频在线观看| 国产精品1区二区.| 国产在线精品视频| 99久久er热在这里只有精品66| 亚洲成av人片一区二区| 国产精品美女久久久久av爽李琼| 欧美放荡的少妇| 色婷婷久久久亚洲一区二区三区| 国产精品影音先锋| 久久99九九99精品| 青娱乐精品视频在线| 亚洲国产精品一区二区www| 国产精品久久久久影院亚瑟 | 亚洲色图视频免费播放| 欧美va在线播放| 精品1区2区3区| 日本大香伊一区二区三区| 国产成人精品免费网站| 精品一二三四区| 石原莉奈一区二区三区在线观看| 成人欧美一区二区三区白人| 欧美激情一区在线观看| 精品国产一区二区精华| 欧美一区二区在线不卡| 欧美日韩精品福利| 欧美日韩国产bt| 欧美日韩第一区日日骚| 欧美高清视频在线高清观看mv色露露十八 | 欧美亚洲综合色| 欧美视频中文字幕| 欧美日韩亚州综合| 日韩一区二区在线观看视频 | 午夜天堂影视香蕉久久| 亚洲国产成人porn| 亚洲一区二区三区四区在线观看 | 国产精品拍天天在线| 欧美mv日韩mv国产网站app| 91官网在线观看| 欧美日韩一区二区三区在线看| 91国产丝袜在线播放| 欧美午夜影院一区| 欧美日韩亚洲丝袜制服| 在线成人免费视频| 日韩一区二区高清| 日韩理论电影院| 99久久久精品| 成年人国产精品| 成人av免费在线播放| 91小视频在线| 欧美日韩精品一区二区三区蜜桃 | 成人动漫视频在线| 国产精品99久久久久| 成人开心网精品视频| 91麻豆免费视频| 欧美日本国产视频| 精品国精品国产尤物美女| 中文字幕免费一区| 午夜精品久久久久久久久| 美日韩一级片在线观看| 99久久精品免费观看| 91精品午夜视频| 亚洲欧洲精品一区二区三区| 91香蕉视频mp4| 一本到不卡免费一区二区| 日本一道高清亚洲日美韩| 老司机免费视频一区二区| 不卡av在线网| 欧美一级久久久久久久大片| 中文字幕国产一区二区| 午夜日韩在线观看| www.色综合.com| 精品国产99国产精品| 亚洲一级二级三级在线免费观看| 久久成人精品无人区| 在线观看日韩精品| 中文字幕精品综合| 久久精品国产色蜜蜜麻豆| 欧美亚洲自拍偷拍| 国产精品三级av| 国产在线播放一区| 欧美男人的天堂一二区| 亚洲免费在线观看| 成人一二三区视频| 久久这里只有精品首页| 免费观看30秒视频久久| 欧美日韩免费一区二区三区| 亚洲精品久久久蜜桃| www..com久久爱| 日本一区二区三区在线观看| 一区二区三区加勒比av| 国产在线精品一区二区三区不卡| 欧美日韩1234| 午夜精品福利一区二区蜜股av| 色av综合在线| 亚洲一区二区三区在线播放| 色屁屁一区二区| 一区二区在线观看不卡| 成人深夜在线观看| 亚洲国产成人一区二区三区| 成人一区二区三区在线观看| 国产网站一区二区| 国产69精品久久777的优势| 国产欧美精品区一区二区三区| 国产剧情在线观看一区二区| 国产欧美日韩在线观看| 成人美女在线观看| 亚洲毛片av在线| 欧美吻胸吃奶大尺度电影 | 91丨porny丨在线| 亚洲天堂精品在线观看| aaa国产一区| 亚洲精品乱码久久久久久黑人| 91福利小视频| 人人精品人人爱| 久久久亚洲精品一区二区三区| 国产高清在线精品| 成人欧美一区二区三区小说 | 亚洲人成在线播放网站岛国| 日韩在线一二三区| 白白色 亚洲乱淫| 中文字幕一区二区不卡| 色婷婷久久一区二区三区麻豆| 亚洲黄色免费电影| 欧美日韩久久久一区| 麻豆专区一区二区三区四区五区| 欧美一区二区三区免费在线看| 日本免费在线视频不卡一不卡二| 精品国产一区二区三区四区四| 国产福利一区二区三区视频在线 | 国产91高潮流白浆在线麻豆| 国产精品乱码妇女bbbb| 91麻豆swag| 九九视频精品免费| 国产精品三级视频| 欧美综合亚洲图片综合区| 精品一区二区国语对白| 亚洲精品久久久蜜桃| 日韩无一区二区| 色一区在线观看| 风流少妇一区二区| 日本视频中文字幕一区二区三区| 久久嫩草精品久久久精品| 欧美色视频一区| 懂色中文一区二区在线播放| 日韩精品欧美精品| 日韩美女啊v在线免费观看| 日韩欧美一级在线播放| 天天av天天翘天天综合网色鬼国产 | 激情综合五月婷婷| 国产精品国模大尺度视频| 91精品国产品国语在线不卡| 99久久99久久精品国产片果冻| 狠狠色丁香婷综合久久| 午夜久久久影院| 亚洲自拍偷拍av| 中文字幕一区二区视频| 久久久99久久| 日韩亚洲欧美一区二区三区| 色av综合在线| 成人动漫一区二区| 国产精品小仙女| 国内精品国产成人| 麻豆久久久久久| 日本一不卡视频| 91亚洲精品久久久蜜桃| 欧美日韩在线播放| 国产乱淫av一区二区三区| 亚洲五码中文字幕| 中文字幕乱码一区二区免费| 日韩一级片在线观看| 精品视频123区在线观看| 97se亚洲国产综合自在线观| 懂色一区二区三区免费观看| 国产精品88av| 国产精品综合一区二区三区| 久久99久久精品|