麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > PHP > 正文

PHP中error_reporting()用法詳解

2024-05-04 23:38:57
字體:
供稿:網(wǎng)友

php中我們對錯(cuò)誤的處理會常用到error_reporting函數(shù)了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,這個(gè)到底什么意思呢,下面我來來看看。

error_reporting() 函數(shù)規(guī)定報(bào)告哪個(gè)錯(cuò)誤 。該函數(shù)設(shè)置當(dāng)前腳本的錯(cuò)誤報(bào)告級別。該函數(shù)返回舊的錯(cuò)誤報(bào)告級別。

首先要知道error_reporting()函數(shù)是用來設(shè)置錯(cuò)誤級別并返回當(dāng)前級別的。它有14個(gè)錯(cuò)誤級別,如下:

 

 
  1. 1 E_ERROR 致命的運(yùn)行時(shí)錯(cuò)誤。 錯(cuò)誤無法恢復(fù)過來。腳本的執(zhí)行被暫停 
  2. 2 E_WARNING 非致命的運(yùn)行時(shí)錯(cuò)誤。 腳本的執(zhí)行不會停止 
  3. 4 E_PARSE 編譯時(shí)解析錯(cuò)誤。解析錯(cuò)誤應(yīng)該只由分析器生成 
  4. 8 E_NOTICE 運(yùn)行時(shí)間的通知。 
  5. 16 E_CORE_ERROR 在PHP啟動(dòng)時(shí)的致命錯(cuò)誤。這就好比一個(gè)在PHP核心的E_ERROR 
  6. 32 E_CORE_WARNING 在PHP啟動(dòng)時(shí)的非致命的錯(cuò)誤。這就好比一個(gè)在PHP核心E_WARNING警告 
  7. 64 E_COMPILE_ERROR 致命的編譯時(shí)錯(cuò)誤。 這就像由Zend腳本引擎生成了一個(gè)E_ERROR 
  8. 128 E_COMPILE_WARNING 非致命的編譯時(shí)錯(cuò)誤,由Zend腳本引擎生成了一個(gè)E_WARNING警告 
  9. 256 E_USER_ERROR 致命的用戶生成的錯(cuò)誤。 
  10. 512 E_USER_WARNING 非致命的用戶生成的警告。  
  11. 1024 E_USER_NOTICE 用戶生成的通知。 
  12. 2048 E_STRICT 運(yùn)行時(shí)間的通知。 
  13.  
  14. 4096 E_RECOVERABLE_ERROR 捕捉致命的錯(cuò)誤。 
  15.  
  16. 8191 E_ALL來 所有的錯(cuò)誤和警告。 

好像php默認(rèn)是不開啟錯(cuò)誤的,所以你需要配置php.ini文件:

將 display_errors = Off 改為display_errors = On

另外還要配置錯(cuò)誤級別:將

error_reporting = E_ALL 改為:

error_reporting = E_ALL & ~E_NOTICE

應(yīng)為php默認(rèn)是顯示所有錯(cuò)誤的,而有些無害的提示我們不需要顯示,所以設(shè)置如上!

也可以在php代碼運(yùn)用如下:

 

 
  1. <?php 
  2. //禁用錯(cuò)誤報(bào)告,也就是不顯示錯(cuò)誤 
  3. error_reporting(0); 
  4. //報(bào)告運(yùn)行時(shí)錯(cuò)誤 
  5. error_reporting(E_ERROR | E_WARNING | E_PARSE); 
  6. //報(bào)告所有錯(cuò)誤 
  7. error_reporting(E_ALL); 
  8. ?> 

使用示例:

今天學(xué)習(xí)CI框架過程中遇到個(gè)問題:

 

 
  1. A PHP Error was encountered  
  2. Severity: Notice  
  3.  
  4. Message: Undefined variable: user  

一般在默認(rèn)的普通PHP文件中輸出一個(gè)未定義聲明的變量是不會報(bào)錯(cuò)誤的,但在codeigniter框架下卻要報(bào)錯(cuò)誤,這對于想集成 添加 和 修改 頁面于一體的”懶人”很不方便,由于是初學(xué)者開始還想怎么在代碼中屏蔽這一錯(cuò)誤提示呢.甚至用到了@,但聽很多人都說@會大大降低性能….

最后突然想到,是不是codeigniter有意讓這錯(cuò)誤信息提示出來了呢,我們該如何去屏蔽掉這一類錯(cuò)誤呢?zé)o意中搜索到了”如何讓codeigniter不顯示Notice信息?”,茅塞頓開.原來是入口index.php中的error_reporting(E_ALL);在作怪.只需要把它改成

error_reporting(E_ALL ^ E_NOTICE);

就可以屏蔽掉這個(gè)錯(cuò)誤,而不影響其他的報(bào)錯(cuò).

我們在程序中可能經(jīng)常看到這么一個(gè)函數(shù)

 

 
  1. function setErrorReporting() 
  2. //從配置文件讀取當(dāng)前是否為開發(fā)環(huán)境 
  3. if (DEV_ENV == true) { 
  4. ini_set("error_reprorting""E_ALL & ~E_NOTICE"); 
  5. ini_set("display_errors""on"); 
  6. else { 
  7. error_reporting(E_ALL); 
  8. ini_set('display_errors''Off'); 
  9. ini_set("log_errors" , "On"); 
  10. ini_set('error_log''/var/log/phperror.log'); 

舉例說明:

在Windows環(huán)境下:原本在php4.3.0中運(yùn)行正常的程序,在4.3.1中為何多處報(bào)錯(cuò),大體提示為:Notice:Undefined varialbe:變量名稱.

例如有如下的代碼:

代碼如下復(fù)制代碼

if (!$tmp_i) {

$tmp_i=10;

}

在4.3.0中運(yùn)行正常,在4.3.1中運(yùn)行會提示Notice:Undefined varialbe:tmp_i

問題如下:1.問題出在哪里?

2.應(yīng)如何修改這段代碼?

3.不改段代碼,如何修改php.ini中的設(shè)置使原來在4.3.0中的程序在4.3.1的環(huán)境下運(yùn)行正常而不出現(xiàn)這個(gè)錯(cuò)誤提示.

解決辦法:

在程序開頭加一句:

代碼如下復(fù)制代碼

error_reporting(E_ALL & ~E_NOTICE); 或error_reporting(E_ALL ^ E_NOTICE);

或者修改php.ini:

代碼如下復(fù)制代碼

error_reporting = E_ALL & ~E_NOTICE

有關(guān)error_reporting()函數(shù): error_reporting() 設(shè)置 PHP 的報(bào)錯(cuò)級別并返回當(dāng)前級別。

; 錯(cuò)誤報(bào)告是按位的。或者將數(shù)字加起來得到想要的錯(cuò)誤報(bào)告等級。

; E_ALL - 所有的錯(cuò)誤和警告

; E_ERROR - 致命性運(yùn)行時(shí)錯(cuò)

; E_WARNING - 運(yùn)行時(shí)警告(非致命性錯(cuò))

; E_PARSE - 編譯時(shí)解析錯(cuò)誤

; E_NOTICE - 運(yùn)行時(shí)提醒(這些經(jīng)常是是你的代碼的bug引起的,也可能是有意的行為造成的。(如:基于未初始化的變量自動(dòng)初始化為一個(gè)空字符串的事實(shí)而使用一個(gè)未初始化的變量)

; E_CORE_ERROR - 發(fā)生于PHP啟動(dòng)時(shí)初始化過程中的致命錯(cuò)誤

; E_CORE_WARNING - 發(fā)生于PHP啟動(dòng)時(shí)初始化過程中的警告(非致命性錯(cuò))

; E_COMPILE_ERROR - 編譯時(shí)致命性錯(cuò)

; E_COMPILE_WARNING - 編譯時(shí)警告(非致命性錯(cuò))

; E_USER_ERROR - 用戶產(chǎn)生的出錯(cuò)消息

; E_USER_WARNING - 用戶產(chǎn)生的警告消息

; E_USER_NOTICE - 用戶產(chǎn)生的提醒消息

E_NOTICE 表示一般情形不記錄,只有程式有錯(cuò)誤情形時(shí)才用到,例如企圖存取一個(gè)不存在的變數(shù),或是呼叫 stat() 函式檢視不存在的檔案。

E_WARNING 通常都會顯示出來,但不會中斷程式的執(zhí)行。這對除錯(cuò)很有效。例如:用有問題的常規(guī)表示法呼叫 ereg()。

E_ERROR 通常會顯示出來,亦會中斷程式執(zhí)行。意即用這個(gè)遮罩無法追查到記憶體配置或其它的錯(cuò)誤。

E_PARSE 從語法中剖析錯(cuò)誤。

E_CORE_ERROR 類似 E_ERROR,但不包括 PHP 核心造成的錯(cuò)誤。

E_CORE_WARNING 類似 E_WARNING,但不包括 PHP 核心錯(cuò)誤警告

使用方法:

error_reporting(0);//禁用錯(cuò)誤報(bào)告

error_reporting(E_ALL ^ E_NOTICE);//顯示除去 E_NOTICE 之外的所有錯(cuò)誤信息

error_reporting(E_ALL^E_WARNING^E_NOTICE);//顯示除去E_WARNING E_NOTICE 之外的所有錯(cuò)誤信息

error_reporting(E_ERROR | E_WARNING | E_PARSE);//顯示運(yùn)行時(shí)錯(cuò)誤,與error_reporting(E_ALL ^ E_NOTICE);效果相同。error_reporting(E_ALL);//顯示所有錯(cuò)誤

error_reporting(0)

error_reporting(255);

是列出所有提示

error_reporting(0);

是不顯示所有提示

建議使用

error_reporting(7);

只顯示嚴(yán)重錯(cuò)誤

1 E_ERROR 致命的運(yùn)行時(shí)錯(cuò)誤

2 E_WARNING 運(yùn)行時(shí)警告(非致命性錯(cuò)誤)

4 E_PARSE 編譯時(shí)解析錯(cuò)誤

8 E_NOTICE 運(yùn)行時(shí)提醒(經(jīng)常是bug,也可能是有意的)

16 E_CORE_ERROR PHP啟動(dòng)時(shí)初始化過程中的致命錯(cuò)誤

32 E_CORE_WARNING PHP啟動(dòng)時(shí)初始化過程中的警告(非致命性錯(cuò))

64 E_COMPILE_ERROR 編譯時(shí)致命性錯(cuò)

128 E_COMPILE_WARNING 編譯時(shí)警告(非致命性錯(cuò))

256 E_USER_ERROR 用戶自定義的致命錯(cuò)誤

512 E_USER_WARNING 用戶自定義的警告(非致命性錯(cuò)誤)

1024 E_USER_NOTICE 用戶自定義的提醒(經(jīng)常是bug,也可能是有意的)

2048 E_STRICT 編碼標(biāo)準(zhǔn)化警告(建議如何修改以向前兼容)

4096 E_RECOVERABLE_ERROR 接近致命的運(yùn)行時(shí)錯(cuò)誤,若未被捕獲則視同E_ERROR

6143 E_ALL 除E_STRICT外的所有錯(cuò)誤(PHP6中為8191,即包含所有)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国内性爱视频 | 久久久久久久久国产 | 天天干导航 | 国产青草视频在线观看视频 | 久久精品首页 | 国产精品一区二区三区在线 | 国产日韩免费观看 | 成人在线观看小视频 | 亚洲电影在线观看高清免费 | 国产羞羞视频在线观看 | 黄在线看 | 久久久久国产成人精品亚洲午夜 | 欧美a在线观看 | 日韩 欧美 中文 | 精品一区二区久久久久久久网精 | 激情综合在线 | 免费观看又色又爽又黄的崩锅 | 久久精品99久久久久久2456 | 精品久久中文字幕 | 久久中文字幕在线观看 | 19禁国产精品福利视频 | 91在线精品亚洲一区二区 | 亚洲一区二区免费 | 天天看成人免费毛片视频 | 99日韩精品视频 | 亚洲aⅴ在线观看 | 99ri在线 | 黄色大片在线免费看 | 欧美国产一区二区三区 | 久精品国产 | 亚洲网站在线播放 | 精品中文字幕视频 | 外国一级黄色片 | 久久蜜桃香蕉精品一区二区三区 | 欧美成人做爰高潮片免费视频 | 羞羞视频在线免费 | 成人在线视频国产 | 视频在线中文字幕 | 91精品国产91久久久久久丝袜 | 在线免费av网站 | 毛片电影网址 |