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

PHP的全局錯誤處理詳解
來源:易賢網 閱讀:1230 次 日期: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的全局錯誤處理詳解
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲美洲欧洲综合国产一区| 国产日韩专区| 蜜臀久久久99精品久久久久久| 欧美日韩高清在线播放| 亚洲一区二区免费在线| 久久9热精品视频| 国产精品卡一卡二卡三| 日韩亚洲视频在线| 国产欧美日本一区视频| 欧美日本精品一区二区三区| 亚洲一区久久久| 国产精品久久久久7777婷婷| 亚洲午夜高清视频| 欧美日韩国产区| 久久综合给合久久狠狠色| 久久夜色精品国产噜噜av| 免费国产一区二区| 亚洲国产小视频在线观看| 免费在线一区二区| 欧美成人伊人久久综合网| 99ri日韩精品视频| 亚洲激情另类| 亚洲字幕一区二区| 亚洲精品在线观看视频| 欧美三级免费| 在线视频精品一区| 亚洲三级电影全部在线观看高清| 国产九区一区在线| 久久手机免费观看| 欧美日韩少妇| 在线观看欧美| 91久久中文字幕| 欧美日韩在线电影| 欧美视频亚洲视频| 狠狠色狠狠色综合人人| 亚洲激情综合| 久久久久综合一区二区三区| 亚洲视频一区二区| 亚洲第一精品久久忘忧草社区| 一区二区三区久久精品| 午夜精彩国产免费不卡不顿大片| 国产亚洲精品福利| 亚洲无玛一区| 国产精品亚洲片夜色在线| 99亚洲一区二区| 国产精品成人一区| 欧美影院一区| 国产精品日本欧美一区二区三区| 中国亚洲黄色| 狠狠爱成人网| 国产精品日韩电影| 欧美高清不卡在线| 欧美专区福利在线| 91久久极品少妇xxxxⅹ软件| 国产精品久久久久久久app| 久久免费偷拍视频| 亚洲午夜久久久久久久久电影院| 国产精品自拍三区| 欧美日韩久久不卡| 欧美国产视频在线| 老司机精品导航| 久久久精品2019中文字幕神马| 亚洲精品网站在线播放gif| 国产欧美一区二区视频| 欧美日韩国产在线一区| 玖玖精品视频| 性欧美大战久久久久久久免费观看| 亚洲国产成人久久综合一区| 激情成人av| 亚洲第一色中文字幕| 激情五月婷婷综合| 伊人久久综合| 最新日韩在线视频| 亚洲国产精品久久久久| 在线日本欧美| 日韩视频在线观看免费| 亚洲精品免费在线观看| 91久久久国产精品| 在线综合视频| 性伦欧美刺激片在线观看| 午夜视频一区在线观看| 久久久久久久久久久久久女国产乱| 欧美一区二区视频免费观看| 午夜精品免费视频| 欧美一级专区| 欧美在线视频播放| 久久久久久久久伊人| 久久久久久9| 欧美电影美腿模特1979在线看| 欧美电影免费观看高清完整版| 欧美另类一区二区三区| 国产精品久久一卡二卡| 国产综合色产| 亚洲一区二区三区777| 欧美一区二区三区视频| 亚洲精品欧美极品| 久久成人18免费网站| 亚洲人成在线观看一区二区| 午夜国产精品视频| 国产精品久久久久久久久借妻| 国模私拍一区二区三区| 亚洲欧美春色| 欧美日韩在线视频一区| 亚洲国产午夜| 老司机精品视频网站| 国产亚洲欧美另类一区二区三区| 99天天综合性| 欧美日产一区二区三区在线观看| 国产综合久久久久久| 久久se精品一区精品二区| 国产精品初高中精品久久| 99国产麻豆精品| 欧美色精品天天在线观看视频| 狠狠综合久久| 快播亚洲色图| 一本一本久久| 亚洲国产日韩欧美综合久久| 国产三区二区一区久久| 久久久久99| 久久久久久久激情视频| 久久久久久噜噜噜久久久精品 | 久久九九全国免费精品观看| 久久免费国产| 亚洲一区二区三区在线播放| 亚洲精品一区二区三区av| 国产综合久久久久影院| 国产亚洲欧美日韩一区二区| 欧美怡红院视频| 日韩一级在线| 99精品免费视频| 国产一区二区高清| 欧美精品一区二| 国产精品久久久久久久久久尿| 欧美日韩免费在线视频| 欧美另类久久久品| 亚洲激情电影中文字幕| 久久综合久久久| 99re6这里只有精品| 狠狠色综合播放一区二区| 午夜精品福利电影| 国产精品男女猛烈高潮激情| 久久婷婷成人综合色| 亚洲三级毛片| 老司机免费视频一区二区| 亚洲第一区在线观看| 欧美亚男人的天堂| 欧美日韩久久不卡| 久久一二三区| 亚洲天堂av在线免费观看| 国产在线一区二区三区四区| 欧美视频中文字幕在线| 欧美成人免费一级人片100| 亚洲深夜福利视频| ●精品国产综合乱码久久久久| 国产精品高潮粉嫩av| 欧美裸体一区二区三区| 日韩亚洲视频| 欧美日韩综合网| 欧美美女bb生活片| 欧美国产日韩视频| 欧美精品在线观看91| 小黄鸭精品密入口导航| 午夜精品久久久久久久白皮肤 | 性欧美video另类hd性玩具| 在线视频精品一| 亚洲国产精彩中文乱码av在线播放| 国产精品va在线| 欧美激情一区二区三区在线| 欧美成人国产一区二区| 久久精品中文字幕免费mv| 亚洲精品在线三区| 日韩午夜在线视频| 亚洲在线黄色| 亚洲一区亚洲二区| 欧美在线观看一区二区三区| 久久久久久一区二区| 欧美激情一区二区三级高清视频| 香蕉尹人综合在线观看| 欧美一区中文字幕| 欧美日韩国产二区| 国产欧美日韩综合一区在线播放| 欧美精品久久久久久久久老牛影院 | 国产精品你懂的在线欣赏| 国产一区二区精品久久91| 亚洲精品国产欧美| 日韩系列在线| 久久综合狠狠综合久久综青草| 久久激情视频久久| 欧美高清自拍一区| 国产精品99免费看 | 欧美成人免费在线| 精品成人一区| 亚洲国产精品免费| 午夜精品久久久久久久99水蜜桃| 久久亚洲精品一区| 欧美日韩一区二区精品| 国产日本亚洲高清| 午夜精品影院在线观看| 国产精品播放| 韩国三级在线一区|