日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP中error_reporting()用法详解

發布時間:2024/9/20 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP中error_reporting()用法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

error_reporting() 函數規定報告哪個錯誤 。該函數設置當前腳本的錯誤報告級別。該函數返回舊的錯誤報告級別。

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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1??? E_ERROR???? 致命的運行時錯誤。 錯誤無法恢復過來。腳本的執行被暫停 2??? E_WARNING??? 非致命的運行時錯誤。 腳本的執行不會停止 4??? E_PARSE???? 編譯時解析錯誤。解析錯誤應該只由分析器生成 8??? E_NOTICE???? 運行時間的通知。 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???? 運行時間的通知。 4096?? E_RECOVERABLE_ERROR 捕捉致命的錯誤。 8191?? E_ALL來???? 所有的錯誤和警告。

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

將 display_errors = Off 改為display_errors = On

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

error_reporting = E_ALL???? 改為:

error_reporting = E_ALL & ~E_NOTICE

應為php默認是顯示所有錯誤的,而有些無害的提示我們不需要顯示,所以設置如上!

也可以在php代碼運用如下:

?
1 2 3 4 5 6 7 8 <?php //禁用錯誤報告,也就是不顯示錯誤 error_reporting(0); //報告運行時錯誤 error_reporting(E_ERROR | E_WARNING | E_PARSE); //報告所有錯誤 error_reporting(E_ALL); ?>

使用示例:

今天學習CI框架過程中遇到個問題:

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

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

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

我們在程序中可能經常看到這么一個函數

?
1 2 3 4 5 6 7 8 9 10 11 12 13 function setErrorReporting() { ??//從配置文件讀取當前是否為開發環境 ??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環境下:原本在php4.3.0中運行正常的程序,在4.3.1中為何多處報錯,大體提示為:Notice:Undefined varialbe:變量名稱.

例如有如下的代碼:
?代碼如下?復制代碼
if (!$tmp_i) {
$tmp_i=10;
}
在4.3.0中運行正常,在4.3.1中運行會提示Notice:Undefined varialbe:tmp_i
問題如下:1.問題出在哪里?
2.應如何修改這段代碼?
3.不改段代碼,如何修改php.ini中的設置使原來在4.3.0中的程序在4.3.1的環境下運行正常而不出現這個錯誤提示.
解決辦法:

在程序開頭加一句:
?代碼如下?復制代碼
error_reporting(E_ALL & ~E_NOTICE); 或error_reporting(E_ALL ^ E_NOTICE);
或者修改php.ini:
?代碼如下?復制代碼
error_reporting = E_ALL & ~E_NOTICE
有關error_reporting()函數: error_reporting() 設置 PHP 的報錯級別并返回當前級別。
; 錯誤報告是按位的。或者將數字加起來得到想要的錯誤報告等級。
; E_ALL - 所有的錯誤和警告
; E_ERROR - 致命性運行時錯
; E_WARNING - 運行時警告(非致命性錯)
; E_PARSE - 編譯時解析錯誤
; E_NOTICE - 運行時提醒(這些經常是是你的代碼的bug引起的,也可能是有意的行為造成的。(如:基于未初始化的變量自動初始化為一個空字符串的事實而使用一個未初始化的變量)
; E_CORE_ERROR - 發生于PHP啟動時初始化過程中的致命錯誤
; E_CORE_WARNING - 發生于PHP啟動時初始化過程中的警告(非致命性錯)
; E_COMPILE_ERROR - 編譯時致命性錯
; E_COMPILE_WARNING - 編譯時警告(非致命性錯)
; E_USER_ERROR - 用戶產生的出錯消息
; E_USER_WARNING - 用戶產生的警告消息
; E_USER_NOTICE - 用戶產生的提醒消息
E_NOTICE 表示一般情形不記錄,只有程式有錯誤情形時才用到,例如企圖存取一個不存在的變數,或是呼叫 stat() 函式檢視不存在的檔案。
E_WARNING 通常都會顯示出來,但不會中斷程式的執行。這對除錯很有效。例如:用有問題的常規表示法呼叫 ereg()。
E_ERROR 通常會顯示出來,亦會中斷程式執行。意即用這個遮罩無法追查到記憶體配置或其它的錯誤。
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);//顯示運行時錯誤,與error_reporting(E_ALL ^ E_NOTICE);效果相同。error_reporting(E_ALL);//顯示所有錯誤
error_reporting(0)
error_reporting(255);
是列出所有提示
error_reporting(0);
是不顯示所有提示
建議使用
error_reporting(7);
只顯示嚴重錯誤
1 E_ERROR 致命的運行時錯誤
2 E_WARNING 運行時警告(非致命性錯誤)
4 E_PARSE 編譯時解析錯誤
8 E_NOTICE 運行時提醒(經常是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 用戶自定義的提醒(經常是bug,也可能是有意的)
2048 E_STRICT 編碼標準化警告(建議如何修改以向前兼容)
4096 E_RECOVERABLE_ERROR 接近致命的運行時錯誤,若未被捕獲則視同E_ERROR
6143 E_ALL 除E_STRICT外的所有錯誤(PHP6中為8191,即包含所有)

來源:http://www.jb51.net/article/71739.htm

總結

以上是生活随笔為你收集整理的PHP中error_reporting()用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 四虎成人精品永久免费av | 天堂在线精品视频 | 福利所第一导航 | 91视频影院 | 香蕉视频免费在线 | 9191国产精品| 在线久草 | 理论片高清免费理伦片 | 少妇无内裤下蹲露大唇视频 | 国产真实乱偷精品视频 | 在线免费观看视频黄 | 亚洲高清影院 | 草色网 | 9.1成人看片免费版 日韩经典在线 | 日本夜夜操 | 国产一线在线 | 精品免费一区二区 | 久久精品高清视频 | 日本在线不卡一区二区 | 国产成人精品无码片区在线 | 欧美成人午夜精品久久久 | 99mav | 国产片在线 | 清冷学长被爆c躁到高潮失禁 | 26uuu成人网 国产精品久久久久久久久久直播 | 日本少妇色 | 中国免费看的片 | 国产欧美在线 | 成人小视频在线看 | 私人av | 日韩一区不卡视频 | 超碰免费97| 国产一级一片免费播放放a 丁香六月色 | 黄页网站免费观看 | 日韩视频 中文字幕 | 成年人黄色在线观看 | 五月花成人网 | 国产精品久久色 | 欧美在线 | 亚洲 | 九九超碰 | 无码aⅴ精品一区二区三区 精品久久在线 | 激情欧美一区二区三区精品 | 91久久国产视频 | 国产成人免费av一区二区午夜 | 日本一区二区视频在线 | 色狠久 | 国产精品极品白嫩 | 国产精品国产三级国产专区51 | 人妻丰满熟妇av无码区不卡 | 亚洲精品国产一区二区 | 国产精品久久久久久久久久久久久久久久 | 欧美猛交xxx| 经典三级第一页 | 中国在线观看视频高清免费 | 二区三区视频 | 色呦呦视频在线观看 | 亚洲一区欧美二区 | 色999在线| 蜜桃av网站 | 日本黄色录象 | 免费a网址| 欧美日韩激情在线 | 成人在线一区二区 | 另类小说色| 欧美一级片播放 | 毛片的网址 | 69久久精品无码一区二区 | 国产强被迫伦姧在线观看无码 | 一起草最新网址 | 色妞网站 | 亚洲欧美偷拍一区 | 老司机激情影院 | 亚洲一区网站 | 中文字幕国产视频 | 天堂免费在线视频 | 看av网站| 欧美成人h版 | 四虎在线视频免费观看 | 美女扒开尿口给男人桶 | 欧美男女视频 | 91精品国产一区二区三区蜜臀 | 亚洲乱码国产乱码精品精软件 | 欧美日韩一区二区三区 | 美女网站免费黄 | 天堂在线8 | 亚洲综合图| 嫩草视频在线免费观看 | 色av综合 | 色伊人影院 | 9人人澡人人爽人人精品 | 婷婷成人综合 | 奇米av在线| 久久91精品国产 | 69精品 | aa片在线观看视频在线播放 | 欧美成人免费播放 | 中国性xxx | 成人区人妻精品一区二区网站 | 色香色香欲天天天影视综合网 |