1. php怎麼屏蔽warning
諸如下面這些錯誤的提示:Warning: file_get_contents(/usr/local/tads/htdocs/XXXXXX/src/cache/countLoginnum.txt) [function.file-get-contents]: failed to open stream: No such file or directory in/usr/local/tads/htdocs/XXXXXXX/src/controllers/defaultController.php on line 43Warning: Cannot modify header information - headers already sent by (output started at /usr/local/tads/htdocs/XXXXXX/src/config/env.php:5) in/usr/local/taesdk/1.0/phplib3/src/base/core/TMWebResponse.class.php on line 332有的時候代碼的警告會導致整個項目無法運行,比如某個變數無對象的情況,若無影響,這時如果屏蔽警告,就可以使整個項目恢復正常運行。當然它的作用不在於這,而是在成品網站或做伺服器時,不輸出錯誤信息可以減少被黑客攻擊的風險(對於一些容易出錯並且容易暴漏敏感數據的代碼,一般多在資料庫這塊吧),也能在出錯的情況下仍保持網站的美觀。至於在調試下,那這個錯誤提示信息還是比較有用的,可以在PHP頁面最前邊加上一句: error_reporting(E_ALL & ~E_NOTICE);讓出錯時顯示錯誤信息。屏蔽的方法:
屏蔽PHP錯誤提示方法一、在有可能出錯的函數前加@,然後or die("") 如: @mysql_connect(...) or die("Database Connect Error")
屏蔽PHP錯誤提示方法二、編輯php.ini ,查找"display_errors =" ,將「=」後面的值改為"off。
屏蔽PHP錯誤提示方法三、在php腳本前加error_reporting(0),屏蔽所有錯誤提示。
例:
@$a = $b['a']; //忽略@後面語句的錯誤
$a = @$b['a']; //忽略@後面語句的錯誤,推薦使用這句。因為錯誤是在$b這個數組中發生的,所以@符號在$b前就可以了,這是錯誤真正發生的地方。
2. 如何有效的屏蔽掉PHP警告和錯誤提示
方法一、在有可能出錯的函數前加@,然後or die("")
如:
@mysql_connect(...) or die("Database Connect Error")
屏蔽PHP錯誤提示方法二、編輯php.ini ,查找"display_errors =" ,將「=」後面的值改為"off。
屏蔽PHP錯誤提示方法三、在php腳本前加error_reporting(0),屏蔽所有錯誤提示。
error_reporting
配置錯誤信息回報的等級。
語法: int error_reporting(int [level]);
返回值: 整數
函數種類: PHP 系統功能
屏蔽PHP錯誤提示函數內容說明
本函數用來配置錯誤信息回報的等級,參數 level 是一個整數的位遮罩 (bitmask),見下表。
遮罩值 表示名稱
E_ERROR
E_WARNING
E_PARSE
E_NOTICE
E_CORE_ERROR
E_CORE_WARNING
E_NOTICE 表示一般情形不記錄,只有程序有錯誤情形時才用到,例如企圖存取一個不存在的變數,或是呼叫 stat() 函數檢視不存在的文件。
E_WARNING 通常都會顯示出來,但不會中斷程序的執行。這對除錯很有效。例如:用有問題的正則表達式呼叫 ereg()。
E_ERROR 通常會顯示出來,亦會中斷程序執行。意即用這個遮罩無法追查到內存配置或其它的錯誤。
E_PARSE 從語法中解析錯誤。
E_CORE_ERROR 類似 E_ERROR,但不包括 PHP 核心造成的錯誤。
E_CORE_WARNING 類似 E_WARNING,但不包括 PHP 核心錯誤警告。
error_reporting( 7 ) = error_reporting( 1+2+4) = error_reporting(E_ERROR | E_WARING | E_PARSE)
以上就是屏蔽PHP錯誤提示的相關實現方法。
如何有效實現