今天在調(diào)試程序的時(shí)候,很多網(wǎng)上提供的源碼都會(huì)出現(xiàn) Undefined variable錯(cuò)誤,一般情況下php是不需要定義變量的,但如果服務(wù)器什么都報(bào)錯(cuò)的,就會(huì)出現(xiàn)錯(cuò)誤,所以服務(wù)器上都是應(yīng)該屏蔽這種錯(cuò)誤的
PHP默認(rèn)配置會(huì)報(bào)這個(gè)錯(cuò)誤,我的PHP版本是5.2.13,存在這個(gè)問(wèn)題:
Notice: Undefined variable
這就是將警告在頁(yè)面上打印出來(lái),雖然這是有利于暴露問(wèn)題,但實(shí)現(xiàn)使用中會(huì)存在很多問(wèn)題。
需要設(shè)置顯示錯(cuò)誤級(jí)別,來(lái)解決問(wèn)題。
網(wǎng)絡(luò)上的通用解決辦法是修改php.ini的配置:
解決方法:
1) error_reporting設(shè)置:
找到error_reporting = E_ALL
修改為error_reporting = E_ALL & ~E_NOTICE
2) register_globals設(shè)置:
找到register_globals = Off
修改為register_globals = On
我發(fā)現(xiàn)在php代碼中直接使用
error_reporting(E_ALL & ~E_NOTICE);
可以解決這個(gè)問(wèn)題,小技巧記一下,呵呵。
以下是補(bǔ)充:
Notice: Undefined variable: email in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
Notice: Undefined variable: subject in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
Notice: Undefined variable: comment in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
........
其實(shí)以上就是未定義變量,我們就直接判斷變量的代碼導(dǎo)致。
本來(lái)php是不需要定義變量的,但是出現(xiàn)這種情況應(yīng)該怎么辦呢?
只要在C:\WINDOWS找出php.ini的
在php.ini中的302行 error_reporting = E_ALL
修改成
error_reporting = E_ALL & ~E_NOTICE再重啟apache2.2就行了
解決方法:修改php.ini
將: error_reporting = E_ALL
修改為:error_reporting = E_ALL & ~E_NOTICE
如果什么錯(cuò)誤都不想讓顯示,直接修改:
display_errors = Off
如果你沒(méi)有php.ini的修改權(quán)限,可在php頭部加入
ini_set("error_reporting","E_ALL & ~E_NOTICE");
即可
我們知道在 php 中,變量通常是不需要定義直接使用的,但有的時(shí)候因?yàn)?php 環(huán)境的問(wèn)題會(huì)出現(xiàn)各種各樣奇奇怪怪的事情,今天在調(diào)試程序的時(shí)候直接提示 Notice: Undefined variable 的錯(cuò)誤,這是因?yàn)橛械淖兞繘](méi)有定義造成的,也是暈了,好吧,這種問(wèn)題直接一句屏蔽誤句就搞定了。
直接在程序的最頂端插入一句 error_reporting(0); 相信就不會(huì)再暴露這樣的問(wèn)題了,也不耽誤程序的運(yùn)行,當(dāng)然這個(gè)只是應(yīng)急的方法,我們還是要好好檢查程序哪里出現(xiàn)的問(wèn)題,然后對(duì)癥下藥,對(duì)于直接屏蔽問(wèn)題夏日博客再總結(jié)幾種方法吧。
php.ini 配置文件中的修改
在php.ini中的302行 error_reporting = E_ALL 修改成 error_reporting = E_ALL & ~E_NOTICE再重啟apache2.2就行了,如果什么錯(cuò)誤都不想讓顯示,直接修改:display_errors = Off
php文件中的修改
如果你沒(méi)有php.ini的修改權(quán)限,可在php頭部加入 ini_set("error_reporting","E_ALL & ~E_NOTICE"); 或者 error_reporting(0);//xiariboke.com 即可。
一般情況下直接建議在 php 文件中進(jìn)行添加,這種方法簡(jiǎn)單,不用去修改服務(wù)端的 php.ini 了。