日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > php 錯誤屏蔽 error_reporting詳解

php 錯誤屏蔽 error_reporting詳解

來源:程序員人生   發布時間:2014-04-19 00:56:27 閱讀次數:3571次

在Windows環境下:原本在php4.3.0中運行正常的程序,在4.3.1中為何多處報錯,大體提示為:Notice:Undefined varialbe:變量名稱,例如有如下的代碼:

  1. if (!$tmp_i) {  
  2. $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 - 用戶產生的提醒消息

使用方法:

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);//顯示所有錯誤

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); 就可以屏蔽掉這個錯誤,而不影響其他的報錯.

下邊是搜索到的一些資料:

error_reporting() 設置 PHP 的報錯級別并返回當前級別。

語法:error_reporting(report_level) 

如果參數 level 未指定,當前報錯級別將被返回。下面幾項是 level 可能的值:

1 E_ERROR

2 E_WARNING

4 E_PARSE

8 E_NOTICE

16 E_CORE_ERROR

32 E_CORE_WARNING

64 E_COMPILE_ERROR

128 E_COMPILE_WARNING

256 E_USER_ERROR

512 E_USER_WARNING

1024 E_USER_NOTICE

2047 E_ALL

2048 E_STRICT

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

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

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

E_PARSE 從語法中剖析錯誤。

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

E_CORE_WARNING 類似 E_WARNING,但不包括 PHP 核心錯誤警告。

PHP 的錯誤報告

php.ini 文件中有許多配置設置。您應當已經設置好自己的 php.ini 文件并把它放在合適的目錄中,就像在 Linux 上安裝 PHP 和 Apache 2 的文檔說明中所示的那樣。在調試 PHP 應用程序時,應當知道兩個配置變量。下面是這兩個變量及其默認值:

display_errors = Off  error_reporting = E_ALL

通過在 php.ini 文件中搜索它們,可以發現這兩個變量當前的默認值。display_errors 變量的目的很明顯 —— 它告訴 PHP 是否顯示錯誤。默認值是 Off。但是,要讓開發過程更加輕松,請把這個值設為 On

display_errors = On 

error_reporting 變量的默認值是 E_ALL。這個設置會顯示從不良編碼實踐到無害提示到出錯的所有信息。E_ALL 對于開發過程來說有點太細,因為它在屏幕上為一些小事(例如變量未初始化)也顯示提示,會搞糟瀏覽器的輸出。我只想看到錯誤和不良編碼實踐,但是不想看到無害的提示。所以,請用以下值代替 error_reporting 的默認值:error_reporting = E_ALL & ~E_NOTICE

重新啟動 Apache,就全部設置好了。接下來,將學習如何在 Apache 上做同樣的事。

服務器上的錯誤報告:

依賴于 Apache 正在做的工作,在 PHP 中打開錯誤報告可能沒法工作,因為在計算機上可能有多個 PHP 版本。有時很難區分 Apache 正在使用哪個 PHP 版本,因為 Apache 只能查看一個 php.ini 文件。不知道 Apache 正在使用哪個 php.ini 文件配置自己是一個安全問題。但是,有一種方法可以在 Apache 中配置 PHP 變量,從而保證設置了正確的出錯級別。

而且,最好知道如何在服務器端設置這些配置變量,以否決或搶占 php.ini 文件,從而提供更高級別的安全性。

在配置 Apache 時,應該已經接觸過 /conf/httpd.conf 中 http.conf 文件中的基本配置。

要做在php.ini文件中已經做過的事,請把下列各行添加到 httpd.conf,覆蓋任何 php.ini 文件:

php_flag display_errors on php_value error_reporting 2039 

這會覆蓋在 php.ini 文件中為 display_errors 已經設置的標志,以及 error_reporting 的值。值 2039 代表 E_ALL & ~E_NOTICE。如果愿意采用 E_ALL,請把值設為 2047。同樣,還是要重啟 Apache。

接下來,要在服務器上測試錯誤報告。

關于error_reporting()這個函數,它是可以屏蔽到一些錯誤信息,但是PHP 核心造成的錯誤,是無法屏蔽的,因為PHP 核心造成的錯誤會直接導致PHP文件編譯失敗,因為書寫格式沒有按照PHP的編碼規則寫而造成的錯誤,是無法屏蔽的 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 午夜性爽爽爽爽爱爱爱爱 | 中文字幕av一区二区三区 | 91精品国产92久久久久 | 日韩视频在线一区二区 | 91超碰免费 | 在线久草 | 日韩在线免费播放 | 精品久久ai | 国产视频a | 最新国产精品视频 | 性色一区二区三区 | 自拍偷拍第一页 | 麻豆专区| 日本三级视频在线观看 | 久久9色| 日韩一区av | 欧美中文字幕一区二区三区 | 久久久久久人 | 欧美日一区二区三区 | 日韩视频在线一区二区 | 成人免费黄色 | 人人九九精品 | 久久99视频精品 | 久久国产精品一区二区三区 | 一区二区三区四区在线播放 | 在线免费av网站 | 日韩欧美在线免费观看 | 五月婷婷综合在线 | 综合久久888 | 亚洲国产精品一区二区第一页 | www.国产一区 | 中国一级特黄毛片大片 | 久久中文字幕一区二区 | 欧美大片黄色 | 狼人av在线| 国产精品片 | 亚洲国产成人精品女人 | 国产精品日韩欧美一区二区三区 | 中文天堂网 | 欧美午夜精品久久久久免费视 | 亚洲国产91 |