首页 > 代码库 > 解决PHP显示Warning和Notice等问题
解决PHP显示Warning和Notice等问题
PHP在安装后,会在php.ini 文件中设置报错、提醒、警告等方式的出现,这样的方式可以使我们在调试PHP程序的时候能及时了解程序所存在的问题。然后,有时候我们并不需要提醒、警告等内容,比如当我们使用PHP5.5(或更高)时,搭配MySql 开发环境时,使用了较老的 MySql连接方式,此时PHP 就会提示:请使用最新的 MySql 连接方式,当你在使用其读取数据库内容作为 json 格式(或其他)返回前台时,往往内容就会发生错误
如何屏蔽这个错误呢,方法有下:
1,在可能(或已经)发生提醒,或错误,或警告的页面添加屏蔽错误提醒:
error_reporting(E_ALL ^ E_DEPRECATED);
//在本版本php5.5,已经不建议采用老式的mysql连接方法
//但speedPHP还是沿用着老式的连接方法,这时php会报E_deprecated提示,此时关掉该提示就Ok了,也可以将
//php置于部署模式(非开发模式),但最好的解决方法是采用最新的speedPHP
一般还可以使用下面的内容来解决一些 notice waring 等问题
ini_set("display_errors", 0);
error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_ALL ^ E_WARNING);
2,打开php.ini文件,找到相关设置(如下图),将 on 改成 off,就可以屏蔽出错(不推荐此方法):
有时候修改了 php.ini 的dispaly_errors 还是不行,那就参照下面的方法:
修改php.ini,将display_errors = On 改为 display_errors = Off,结果还是不行。百度了下,原来还要在php-fpm.conf里设置。
打开php-fpm.conf,找到:
<value name="php_defines">
</value><value name="sendmail_path">/usr/sbin/sendmail -t -i</value>
<value name="display_errors">0</value>
将其中的值从1改为0就可以了。
3,这种方法非常适用那些项目中已经决定要采用某种一定会引起 提醒 或 警告的方式,一招屏蔽,一劳永逸:
首先参照2,找到相关的 dispaly_errors 的位置,将 Off 改成 On
紧接着找到下图这个位置,修改你需要报错的级别,或不需要报错的级别
参照的报错级别如下:
如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT
E_NOTICE 表示一般情形不记录,只有程式有错误情形时才用到,例如企图存取一个不存在的变数,或是呼叫 stat() 函式检视不存在的档案。 ?