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是服務器上這樣設置,免得暴露太多文件路徑等信息被黑客攻擊,沒有根源上解決問題,錯誤記錄在日志里。