判斷IF($_POST['submit']){ }報錯Notice:Undefined index:submit in解決方法:
1.将條件語句改為if(isset($_POST['submit']) && $_POST['submit']).
2.修改一下php.ini,搜尋error_reporting,原值為:E_ALL,把它修改成E_ALL & ~E_NOTICE就行了,然後重新開機apache.
PHP中error_reporting()用法詳解
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代碼運用如下:
<?php
//禁用錯誤報告,也就是不顯示錯誤
error_reporting(0);
//報告運作時錯誤
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//報告所有錯誤
error_reporting(E_ALL);
?>
使用示例:
今天學習CI架構過程中遇到個問題:
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);
就可以屏蔽掉這個錯誤,而不影響其他的報錯.
我們在程式中可能經常看到這麼一個函數
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;
}