PHP提示Notice: Undefined variable,意思是:你的程式總有有未定義的變數 為什麼在其他地方好好的程式,換個環境報這個Notice,因為php.ini提醒級別設置的問題 場景複原: 舉例,打開php.ini配置文件,搜索error_reporting,讓這個配置的值如下圖 重 ...
PHP提示Notice: Undefined variable,意思是:你的程式中有未定義的變數
為什麼在其他地方好好的程式,換個環境報這個Notice,因為php.ini提醒級別設置的問題
場景複原:
舉例,打開php.ini配置文件,搜索error_reporting,讓這個配置的值如下圖
重啟apache伺服器
新建php文件,代碼如下:
<?php header("Content-type:text/html;charset=UTF-8"); echo $aaa; ?>
就是程式在用到變數$aaa的時候,卻發現$aaa沒有被定義過。
那怎麼解決呢?
方法1:對自己要求嚴格一點,每個變數都聲明下,而不是直接用,代碼加一句,如下:
<?php header("Content-type:text/html;charset=UTF-8"); $aaa = null; //新加的 echo $aaa; ?>
方法2:文件中設置不提醒notice,代碼頭部加上ini_set("error_reporting",E_ALL & ~E_NOTICE); 【註意:E_ALL & ~E_NOTICE是不帶引號的,不是字元串!!!】如下:
<?php ini_set("error_reporting",E_ALL & ~E_NOTICE); header("Content-type:text/html;charset=UTF-8"); echo $aaa; ?>
方法3:修改php.ini配置,重啟伺服器error_reporting = E_ALL & ~E_NOTICE
上述三種方法,任意一種方法都可以解決這個問題(瀏覽器端不輸出Notice: Undefined variable,同時日誌里也不記錄這個問題)。
但是,如果是在php.ini中,設置display_errors = Off,這樣也不顯示,但是日誌里會有很多notice的記錄(我的日誌是開發環境預設的在apache的error.log文件中)
為什麼呢?因為display_errors = Off是伺服器上這樣設置,免得暴露太多文件路徑等信息被黑客攻擊,沒有根源上解決問題,錯誤記錄在日誌里。