开启左侧

[Linux 系统] display_errors设置为Off无效,仍然输出报错

[复制链接]
发表于 2013-12-30 22:33:11 | 显示全部楼层 |阅读模式
某台服务器php.ini的设置:
  1. error_reporting = E_ALL & ~E_NOTICE
  2. display_errors = Off
  3. log_errors = On
  4. error_log = /www/logs/php_error.log
复制代码

按理说这样,错误信息是不会输出了,但是当PHP有错误时,会把报错提示显示在页面上。

搜索了下,发现有人说当log_errors开启时,如果error_log的路径不对,会导致报错显示。经查与此无关。

输出phpinfo(),查看到display_errors是On。在页面中指定:ini_set("DISPLAY_ERRORS",0),仍然无效!

最后发现php-fpm.conf里有句:
  1. Additional php.ini defines, specific to this pool of workers.
  2.                         <value name="php_defines">
  3.                            <value name="sendmail_path">/usr/sbin/sendmail -t -i</value>
  4.                            <value name="display_errors">1</value>
  5.                         </value>
复制代码

      原来忘了修改这个地方的配置,display_errors被设置为1了!这里面也说明了在php_defines里可以额外指定某些php的参数。
      

      接着我去看了nginx和php-fpm的文档搞定了问题,第一次真正的跑nginx没经验,以前都跑的apache,有点不同呀,看来还是要找个时间好好把文档看下。解决方法如下,在即使php有语法错误的情况下,我们依然强制nginx不显示错误,因为我们不是开发人员,这些错误不显示对于网站安全很重要的。
      nginx的display_error配置不仅仅收到php.ini的控制,关键控制还是php-fpm ,大家可以测试下,在php.ini修改display_error = Off的情况下,在查看phpinfo(),依旧可以看到display_error 显示的是 on,也就是显示错误功能其实没有关闭,也就是说,php-fpm能够独立控制相关的参数,所以,还要带php-fpm下修改
      <value name="display_errors">0</value>      ,其中0  表示不显示错误,当然,我们也可以选择注释掉。  然后是php-fpm reload    也就是重启php-fpm
在测试就不会有报错显示了。
我测试发现,好像我们只要用php-fpm下设置关闭了报错信息显示,无论php.ini下的设置如何,display errror都是报错的。

平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

 
QQ在线咨询
售前咨询热线
0532-88371356
售后服务微信
pingduwangzhan
快速回复 返回顶部 返回列表