本文章詳細的介紹了關於PHP,error_reporting,錯誤報告PHP error_reporting(E_ALL ^ E_NOTICE)開啟與關閉錯誤提示的一些方法總結,有需要的朋友可參考一下。
舉例說明:
在Windows環境下:原本在php4.3.0中運行正常的程序,在4.3.1中為何多處報錯,大體提示為:Notice:Undefined varialbe:變量名稱.
例如有如下的代碼:
代碼如下 復制代碼 if (!$tmp_i) {在4.3.0中運行正常,在4.3.1中運行會提示Notice:Undefined varialbe:tmp_i
問題如下:
1.問題出在哪裡?
2.應如何修改這段代碼?
3.不改段代碼,如何修改php.ini中的設置使原來在4.3.0中的程序在4.3.1的環境下運行正常而不出現這個錯誤提示.
解決辦法:
打開PHP安裝目錄下的php.ini文件
找到display_errors = On 修改為 display_errors = off
注意:如果你已經把PHP.ini文件復制到windows目錄下,那麼必須同時把 c:windows/php.ini裡的display_errors = On 修改為display_errors = off
二 讓腳本錯誤提示輸出為日志文件的方法:
打開PHP安裝目錄下的php.ini文件
找到log_errors = off 修改為 log_errors = on
找到error_log = filename 修改為 error_log="D:PHPerrlogphp_error.log" (這裡的目錄和文件名D:PHPerrlogphp_error.log隨便你取什麼)
注意:如果你已經把PHP.ini文件復制到windows目錄下,那麼必須同時把 c:windows/php.ini文件.
此外php_error.log至少要有USER的修改和寫權限,否則無法輸出錯誤日志.
有關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);//顯示所有錯誤
可否關閉PHP的錯誤提示?我不希望讓別人看到我程序的報錯。
問題解答:
由於PHP.ini中的設置是全局性的,我們不能為您單獨某個用戶直接修改全局配置信息,但您可以通過error_reporting這個php函數來調整您所運行的腳本的錯誤信息輸出,例如:
error_reporting(E_ALL^E_NOTICE^E_WARNING);
可以關閉所有notice 和 warning 級別的錯誤。
把這個語句放在您腳本的功用包含文件中,通常為config.php 或者conn.php 中就可以控制輸出了。
代碼如下 復制代碼 <?php