PHP 報錯: “Notice: Undefined variable” 及 “Notice: Undefined index”

在 C 或 Perl 這些程式語語, 在使用變數前需要先進行宣告, 而 PHP 則不需要宣告變數, 可以直接使用變數。

PHP 不需要宣告變數仍可執行, 只要在某些主機會出現 Warning, 例如:

上面程式碼並未宣告變數 $test, 所以會出現錯誤 “Notice: Undefined variable: test”, 但由於這個只是 warning, 所以程式會繼續執行, 除了顯示錯 warning 外, 也會顯示 100 的執行結果:

Notice: Undefined variable: test in /var/www/html/test.php on line 2
100

如果在 PHP 程式碼的層面解決, 方法是在使用 $test 變數前先宣告, 由於 PHP 會自動轉換變數類型, 所以以下兩種方法也可以:

$test = 0;

$test = “”;

例如改成這樣便不會出錯 warning 了:

另一個 warning 是 “Notice: Undefined index”, 這個跟未宣告變數差不多, 只是今次沒有宣告的是陣列的內容, 解決方法跟上面一樣。

如果不想每個 PHP 檔案一同修改, 也可以修改 php.ini, 開啟檔案 php.ini, 找到 error_reporting, 改成這樣:

error_reporting = E_ALL & ~E_NOTICE

或者找到 display_errors, 將它設定為 Off:

display_errors = Off

上面兩個設定只要改其中一個便可以, 然後重新啟動網頁伺服器便會生效。但上面兩個設定只建議在生產環境使用, 如果在測試或開發環境上, 打開對程式碼除錯會更方便。




Leave a Reply