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

首頁 > 開發 > PHP > 正文

PHP中set error handler函數用法小結

2024-05-04 23:40:16
字體:
來源:轉載
供稿:網友
set_error_handler() 函數設置用戶自定義的錯誤處理函數。該函數用于創建運行時期間的用戶自己的錯誤處理方法。該函數會返回舊的錯誤處理程序,若失敗,則返回 null
 

set_error_handler() 函數設置用戶自定義的錯誤處理函數。該函數用于創建運行時期間的用戶自己的錯誤處理方法。該函數會返回舊的錯誤處理程序,若失敗,則返回 null。

下面來看一些例子。

 set_error_handler()

PHP從4.1.0開始提供了自定義錯誤處理句柄的功能函數set_error_handler(),但很少數腳本編寫者知道。set_error_handler這個函數可以很好地防止錯誤路徑泄露,當然還有其它更多的作用。

1.可以用來屏蔽錯誤。 出現錯誤一來會把一些信息暴漏給用戶,極有可能成為黑客攻擊你網站的工具。 二來讓用戶覺得你的水平很挫。

2.可以記下錯誤的信息, 及時發現一些生產環境的出現的問題。

3.可以做相應的處理, 出錯的時候可以顯示跳轉到預先定義好的出錯頁面,提供更好的用戶體驗。

4.可以作為調試工具, 一些時候必須在生產環境調試一些東西, 但又不想影響正在使用的用戶。

5.。。。。

 set_error_handler的使用方法如下:

 

復制代碼代碼如下:

view sourceprint?1 string set_error_handler ( callback error_handler [, int error_types])

 

我們利用error_reporting();看到的錯誤信息包括三個部分,錯誤信息,錯誤文件的絕對地址,錯誤出現的行數。其實還有一個是錯誤類型。Array ( [type] => 1 [message] => Call to undefined method SomeClass::somemedthod() [file] => /home/zhangy/www/aaaa/stasdf.php [line] => 67 ),頁面的絕對路徑最好不要暴露給別人,不然給有些人可稱之機,為了杜絕這一點,好多人都會采用,ini_set("display_errors",0);直接把錯誤信息給屏蔽掉了。這樣就不方便了,如果我們要看信息怎么辦呢?每次查看的時候,是不是都要改一下代碼,或者是改一下apache的配置,在重起一下呢?

php有函數set_error_handler可以解決這個問題

用法如下:

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

php函數register_shutdown_function也可以解決這個問題

用法如下:

int register_shutdown_function ( string $func )

個人覺得報錯函數自己定義,至少有三點好處,

1,不會把文件的絕對路徑顯示出來,安全些

2,即使真的出現了錯誤信息,我們可以對錯誤信息進行處理,讓用戶也看不到fatal error這樣的東西。用戶體驗要好

3,項目上線后,有的時候,你還是要幫用戶去解決問題,這個時候難免要去修改代碼,但是我們又要讓錯誤信息報出來,又不能讓用戶看到,這個時候,用set_error_handler這樣的函數就很爽了。

個人做了一個小測試
 

  1. <?php 
  2.  error_reporting(0); 
  3. register_shutdown_function('error_alert'); 
  4.  function error_alert() 
  5.  { 
  6.  if(is_null($e = error_get_last()) === false
  7.  { 
  8.  set_error_handler('errorHandler'); 
  9.  if($e['type'] == 1){ 
  10.  trigger_error("fatal error", E_USER_ERROR); 
  11.  }elseif($e['type'] == 8){ 
  12.  trigger_error("notice", E_USER_NOTICE); 
  13.  }elseif($e['type'] == 2){ 
  14.  trigger_error("warning", E_USER_WARNING); 
  15.  }else
  16.  trigger_error("other", E_USER_OTHER); 
  17.  } 
  18.  }else
  19.  echo "no error"
  20.  } 
  21.  } 
  22.  set_error_handler('errorHandler'); 
  23. function errorHandler($errno, $errstr, $errfile, $errline,$errcontext) 
  24.  { 
  25.  switch ($errno) { 
  26.  case E_USER_ERROR: 
  27.  echo "<b>My ERROR</b> [$errno] $errstr<br />n"
  28.  echo " Fatal error on line $errline in file $errfile"
  29.  echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />n"
  30.  break
  31.  case E_USER_WARNING: 
  32.  echo "<b>My WARNING</b> [$errno] $errstr<br />n"
  33.  echo " warning on line $errline in file $errfile"
  34.  echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />n"
  35.  break
  36.  case E_USER_NOTICE: 
  37.  echo "<b>My NOTICE</b> [$errno] $errstr<br />n"
  38.  echo " notice on line $errline in file $errfile"
  39.  echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />n"
  40.  break
  41.  default
  42.  echo "Unknown error type: [$errno] $errstr<br />n"
  43.  echo " warning on line $errline in file $errfile"
  44.  echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />n"
  45.  break
  46.  } 
  47.  return true
  48.  } 
  49. class SomeClass { 
  50.  public function someMethod() { 
  51.  } 
  52.  } 
  53. SomeClass::someMedthod(); 
  54. $a="asdf"
  55.  foreach($a as $d){ 
  56.  echo $d; 
  57.  } 
  58.  ?> 
?
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美精品中文字幕在线| 欧美大尺度激情区在线播放| 亚洲区一区二区| 久久深夜福利免费观看| 久久亚洲国产精品| 久久久久久久999精品视频| 正在播放亚洲1区| 国产精品高精视频免费| 亚洲欧洲国产伦综合| 欧美裸体视频网站| 国产suv精品一区二区三区88区| 欧美精品videos性欧美| 亚洲欧美日韩久久久久久| 富二代精品短视频| 国产小视频国产精品| 成人福利视频在线观看| 精品国产欧美一区二区五十路| 久久中文久久字幕| 国产精品久久久久久久久借妻| 国产精品老女人视频| 亚洲成色999久久网站| 岛国视频午夜一区免费在线观看| 亚洲精品99久久久久中文字幕| 国产欧美日韩中文字幕在线| 久久影视三级福利片| 久久91亚洲精品中文字幕奶水| 海角国产乱辈乱精品视频| 亚洲精品v天堂中文字幕| 一区二区亚洲欧洲国产日韩| 亚洲欧美另类国产| 亚洲欧美日韩成人| 欧美老女人www| 日韩电影中文 亚洲精品乱码| 欧美另类69精品久久久久9999| 色噜噜国产精品视频一区二区| 热草久综合在线| 久久久久久久激情视频| 久久九九免费视频| 一区国产精品视频| 欧美激情极品视频| 久久97久久97精品免视看| 精品日本美女福利在线观看| 亚洲色无码播放| 欧美中文字幕在线视频| 久久69精品久久久久久国产越南| 日韩欧美视频一区二区三区| 久久综合88中文色鬼| 亚洲欧洲在线观看| 日韩美女av在线免费观看| 国产精品免费久久久久影院| 亚洲一区二区三区成人在线视频精品| 日韩av最新在线观看| 精品久久久久久中文字幕| 国产精品影院在线观看| 日韩黄在线观看| 亚洲国产毛片完整版| 欧美精品18videosex性欧美| 91超碰中文字幕久久精品| 亚洲天堂成人在线视频| 国产精品18久久久久久首页狼| 欧美日韩日本国产| 全球成人中文在线| 中文字幕欧美精品日韩中文字幕| 97免费视频在线播放| 国产成人激情小视频| 欧美极品美女视频网站在线观看免费| 国产一区香蕉久久| 91在线免费视频| 亚洲国产私拍精品国模在线观看| 91精品久久久久久久久久久久久| 欧美猛交ⅹxxx乱大交视频| 一区二区三区日韩在线| 亚洲精品少妇网址| 91久久精品久久国产性色也91| 丝袜亚洲欧美日韩综合| 成人国产精品日本在线| 亚洲天堂男人天堂女人天堂| 欧美激情一级精品国产| 久久久久久久色| 成人午夜两性视频| 日韩精品亚洲元码| 91色在线观看| 丝袜亚洲欧美日韩综合| 欧美高清一级大片| 欧美视频中文在线看| 日韩欧美精品网站| 免费97视频在线精品国自产拍| 97视频网站入口| 91九色精品视频| 色噜噜狠狠色综合网图区| 久久久91精品国产一区不卡| 亚洲大胆人体av| 日韩免费精品视频| 成人在线国产精品| 国产精品一区=区| 亚洲黄页网在线观看| 久久久久国产精品免费网站| 亚洲一区久久久| 国产成人精品在线| 亚洲最新av在线网站| 亚洲精品网址在线观看| 国产精品小说在线| 在线播放国产一区中文字幕剧情欧美| 国外成人性视频| 久久91亚洲精品中文字幕| 懂色av影视一区二区三区| 精品久久久久久久久中文字幕| 欧美老肥婆性猛交视频| 国内精品久久久久久| 57pao成人国产永久免费| 福利二区91精品bt7086| 亚洲免费av片| 91极品视频在线| 日韩在线视频观看| 日韩在线观看高清| 国产精品美女免费| 亚洲第一男人天堂| 911国产网站尤物在线观看| 日韩欧美精品在线观看| 91精品视频专区| 成人精品视频99在线观看免费| 国产精品视频一| 亚洲精品国产精品乱码不99按摩| 国产亚洲一区二区精品| 日韩av中文字幕在线| 欧美日韩国产区| 日韩电影中文字幕一区| 久久亚洲私人国产精品va| 丁香五六月婷婷久久激情| 91tv亚洲精品香蕉国产一区7ujn| 一区二区亚洲欧洲国产日韩| 日韩欧美精品在线观看| 国产日本欧美在线观看| 国产精品小说在线| 少妇高潮久久久久久潘金莲| 久久韩国免费视频| 亚洲精品永久免费精品| 欧美性猛交xxxx乱大交极品| 亚洲人av在线影院| 国产精品第一第二| 中文字幕亚洲一区| 日韩的一区二区| 欧美另类69精品久久久久9999| 成人激情春色网| 国产精品视频公开费视频| 4438全国成人免费| 欧美性猛交xxxx免费看久久久| 韩国日本不卡在线| 亚洲欧美中文日韩在线v日本| 午夜精品久久久久久久久久久久久| 亚洲天堂免费视频| 国产成人福利夜色影视| 精品国产自在精品国产浪潮| 日韩高清人体午夜| 91色琪琪电影亚洲精品久久| 国产精品自产拍在线观| 午夜精品理论片| 久久久久久成人精品| 日韩中文字幕久久| 亚洲色图国产精品| 最近2019中文免费高清视频观看www99| 蜜臀久久99精品久久久无需会员| 国产亚洲欧美视频| 国产玖玖精品视频|