欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP中error_reporting()用法詳解

 更新時間:2015年08月31日 10:23:16   投稿:hebedich  
php中我們對錯誤的處理會常用到error_reporting函數(shù)了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,這個到底什么意思呢,下面我來來看看。

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

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

1    E_ERROR     致命的運(yùn)行時錯誤。 錯誤無法恢復(fù)過來。腳本的執(zhí)行被暫停
2    E_WARNING    非致命的運(yùn)行時錯誤。 腳本的執(zhí)行不會停止
4    E_PARSE     編譯時解析錯誤。解析錯誤應(yīng)該只由分析器生成
8    E_NOTICE     運(yùn)行時間的通知。
16    E_CORE_ERROR   在PHP啟動時的致命錯誤。這就好比一個在PHP核心的E_ERROR
32    E_CORE_WARNING  在PHP啟動時的非致命的錯誤。這就好比一個在PHP核心E_WARNING警告
64    E_COMPILE_ERROR 致命的編譯時錯誤。 這就像由Zend腳本引擎生成了一個E_ERROR
128   E_COMPILE_WARNING 非致命的編譯時錯誤,由Zend腳本引擎生成了一個E_WARNING警告
256   E_USER_ERROR   致命的用戶生成的錯誤。
512   E_USER_WARNING  非致命的用戶生成的警告。 
1024   E_USER_NOTICE  用戶生成的通知。
2048   E_STRICT     運(yùn)行時間的通知。

4096   E_RECOVERABLE_ERROR 捕捉致命的錯誤。

8191   E_ALL來     所有的錯誤和警告。

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

將 display_errors = Off 改為display_errors = On

另外還要配置錯誤級別:將

error_reporting = E_ALL     改為:

error_reporting = E_ALL & ~E_NOTICE

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

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

<?php
//禁用錯誤報告,也就是不顯示錯誤
error_reporting(0);
//報告運(yùn)行時錯誤
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//報告所有錯誤
error_reporting(E_ALL);
?>

使用示例:

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

A PHP Error was encountered 
Severity: Notice 

Message: Undefined variable: user 

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

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

我們在程序中可能經(jīng)??吹竭@么一個函數(shù)

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

舉例說明:
在Windows環(huán)境下:原本在php4.3.0中運(yùn)行正常的程序,在4.3.1中為何多處報錯,大體提示為: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)這個錯誤提示.
解決辦法:

在程序開頭加一句:
 代碼如下 復(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 的報錯級別并返回當(dāng)前級別。
; 錯誤報告是按位的?;蛘邔?shù)字加起來得到想要的錯誤報告等級。
; E_ALL - 所有的錯誤和警告
; E_ERROR - 致命性運(yùn)行時錯
; E_WARNING - 運(yùn)行時警告(非致命性錯)
; E_PARSE - 編譯時解析錯誤
; E_NOTICE - 運(yùn)行時提醒(這些經(jīng)常是是你的代碼的bug引起的,也可能是有意的行為造成的。(如:基于未初始化的變量自動初始化為一個空字符串的事實而使用一個未初始化的變量)
; E_CORE_ERROR - 發(fā)生于PHP啟動時初始化過程中的致命錯誤
; E_CORE_WARNING - 發(fā)生于PHP啟動時初始化過程中的警告(非致命性錯)
; E_COMPILE_ERROR - 編譯時致命性錯
; E_COMPILE_WARNING - 編譯時警告(非致命性錯)
; E_USER_ERROR - 用戶產(chǎn)生的出錯消息
; E_USER_WARNING - 用戶產(chǎn)生的警告消息
; E_USER_NOTICE - 用戶產(chǎn)生的提醒消息
E_NOTICE 表示一般情形不記錄,只有程式有錯誤情形時才用到,例如企圖存取一個不存在的變數(shù),或是呼叫 stat() 函式檢視不存在的檔案。
E_WARNING 通常都會顯示出來,但不會中斷程式的執(zhí)行。這對除錯很有效。例如:用有問題的常規(guī)表示法呼叫 ereg()。
E_ERROR 通常會顯示出來,亦會中斷程式執(zhí)行。意即用這個遮罩無法追查到記憶體配置或其它的錯誤。
E_PARSE 從語法中剖析錯誤。
E_CORE_ERROR 類似 E_ERROR,但不包括 PHP 核心造成的錯誤。
E_CORE_WARNING 類似 E_WARNING,但不包括 PHP 核心錯誤警告

使用方法:
error_reporting(0);//禁用錯誤報告
error_reporting(E_ALL ^ E_NOTICE);//顯示除去 E_NOTICE 之外的所有錯誤信息
error_reporting(E_ALL^E_WARNING^E_NOTICE);//顯示除去E_WARNING E_NOTICE 之外的所有錯誤信息
error_reporting(E_ERROR | E_WARNING | E_PARSE);//顯示運(yùn)行時錯誤,與error_reporting(E_ALL ^ E_NOTICE);效果相同。error_reporting(E_ALL);//顯示所有錯誤
error_reporting(0)
error_reporting(255);
是列出所有提示
error_reporting(0);
是不顯示所有提示
建議使用
error_reporting(7);
只顯示嚴(yán)重錯誤
1 E_ERROR 致命的運(yùn)行時錯誤
2 E_WARNING 運(yùn)行時警告(非致命性錯誤)
4 E_PARSE 編譯時解析錯誤
8 E_NOTICE 運(yùn)行時提醒(經(jīng)常是bug,也可能是有意的)
16 E_CORE_ERROR PHP啟動時初始化過程中的致命錯誤
32 E_CORE_WARNING PHP啟動時初始化過程中的警告(非致命性錯)
64 E_COMPILE_ERROR 編譯時致命性錯
128 E_COMPILE_WARNING 編譯時警告(非致命性錯)
256 E_USER_ERROR 用戶自定義的致命錯誤
512 E_USER_WARNING 用戶自定義的警告(非致命性錯誤)
1024 E_USER_NOTICE 用戶自定義的提醒(經(jīng)常是bug,也可能是有意的)
2048 E_STRICT 編碼標(biāo)準(zhǔn)化警告(建議如何修改以向前兼容)
4096 E_RECOVERABLE_ERROR 接近致命的運(yùn)行時錯誤,若未被捕獲則視同E_ERROR
6143 E_ALL 除E_STRICT外的所有錯誤(PHP6中為8191,即包含所有)

相關(guān)文章

  • 用php+javascript實現(xiàn)二級級聯(lián)菜單的制作

    用php+javascript實現(xiàn)二級級聯(lián)菜單的制作

    二級級聯(lián)菜單在我去年的時候就用asp+js做過,而現(xiàn)在忽然拿出來再做的時候我發(fā)現(xiàn)我忘記了,而且原來用asp寫的程序都找不到了,真暈[emot]sweat[/emot],于是到網(wǎng)上搜,找了半天,我發(fā)現(xiàn)網(wǎng)上的寫法各異,而且都特別復(fù)雜,這么一個二級級聯(lián)菜單,有必要弄這么復(fù)雜嗎?于是自己想重新寫一個簡單的。在經(jīng)過半個小時左右的思考后,我完成了二級級聯(lián)菜單的設(shè)計和制作。
    2008-05-05
  • PHP進(jìn)行批量任務(wù)處理不超時的解決方法

    PHP進(jìn)行批量任務(wù)處理不超時的解決方法

    這篇文章主要介紹了PHP進(jìn)行批量任務(wù)處理不超時的解決方法,結(jié)合實例形式簡單分析了php結(jié)合ajax進(jìn)行異步處理實現(xiàn)批量任務(wù)不超時的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • php提取數(shù)字拼接數(shù)組的具體操作

    php提取數(shù)字拼接數(shù)組的具體操作

    在本篇文章里小編個大家整理了一篇關(guān)于php提取數(shù)字拼接數(shù)組的具體操作方法,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-08-08
  • PHP緩存技術(shù)的使用說明

    PHP緩存技術(shù)的使用說明

    PHP緩存技術(shù)的應(yīng)用時相當(dāng)普遍的,也許有些人還對這項技術(shù)不太了解,我們現(xiàn)在就為大家詳細(xì)的介紹一下PHP緩存技術(shù)的相關(guān)應(yīng)用技巧。
    2011-08-08
  • php使用json-schema模塊實現(xiàn)json校驗示例

    php使用json-schema模塊實現(xiàn)json校驗示例

    這篇文章主要介紹了php使用json-schema模塊實現(xiàn)json校驗,結(jié)合實例形式分析了json-schema模塊的安裝及使用json-schema模塊進(jìn)行json校驗的相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • PHP ajax 分頁類代碼

    PHP ajax 分頁類代碼

    不錯的ajax分頁類
    2008-11-11
  • php簡單操作mysql數(shù)據(jù)庫的類

    php簡單操作mysql數(shù)據(jù)庫的類

    這篇文章主要介紹了php簡單操作mysql數(shù)據(jù)庫的類,涉及php操作mysql的連接、查詢、插入、刪除等基本操作方法,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • PHP大轉(zhuǎn)盤中獎概率算法實例

    PHP大轉(zhuǎn)盤中獎概率算法實例

    這篇文章主要介紹了PHP大轉(zhuǎn)盤中獎概率算法,實例講述了概率算法的實現(xiàn)過程,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • php字符串截取函數(shù)mb_substr用法實例分析

    php字符串截取函數(shù)mb_substr用法實例分析

    這篇文章主要介紹了php字符串截取函數(shù)mb_substr用法,結(jié)合實例形式分析了php使用mb_substr針對中文字符串截取與編碼控制相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • PHP中通過ADODB庫實現(xiàn)調(diào)用Access數(shù)據(jù)庫之修正版本

    PHP中通過ADODB庫實現(xiàn)調(diào)用Access數(shù)據(jù)庫之修正版本

    PHP中通過ADODB庫實現(xiàn)調(diào)用Access數(shù)據(jù)庫之修正版本...
    2006-12-12

最新評論