display_errors设置为Off无效,仍然输出报错

http://www.xianren.org/web/display_errors-off-no.html


由于使用检测页面异常导致本地路径泄漏,查看360的解决方案:
1、如果是PHP应用程序/Apache服务器,可以通过修改php脚本、配置php.ini以及httpd.conf中的配置项来禁止显示错误信息:
修改php.ini中的配置行: display_errors = off
修改httpd.conf/apache2.conf中的配置行: php_flag display_errors off
修改php脚本,增加代码行: ini_set(‘display_errors’, false);
2、如果是IIS 并且是 支持aspx的环境,可以在网站根目录新建web.config文件(存在该文件则直接修改),或者可以参考这里:http://bbs.webscan.360.cn/forum.php?mod=viewthread&tid=4560&extra=page%3D1
由于使用的是nginx,所以在php.ini的设置:

error_reporting = E_ALL & ~E_NOTICE
display_errors = Off
log_errors = On
error_log = /www/logs/php_error.log

按理说这样,错误信息是不会输出了,但是当PHP有错误时,会把报错提示显示在页面上。
搜索了下,发现有人说当log_errors开启时,如果error_log的路径不对,会导致报错显示。经查与此无关。
输出phpinfo(),查看到display_errors是On。在页面中指定:ini_set(“DISPLAY_ERRORS”,0),仍然无效!
最后发现php-fpm.conf里有句:
引用

Additional php.ini defines, specific to this pool of workers.

/usr/sbin/sendmail -t -i
0

原来忘了修改这个地方的配置,display_errors被设置为1了!改成0就好了。这里面也说明了在php_defines里可以额外指定某些php的参数。
直接将这两段注释掉,php-fpm reload后,报错提示不再显示到页面上了。


你可能感兴趣的:(linux)