如何通过php.ini配置过滤掉通知

时间:2019-05-14 15:06:00

标签: php error-handling configuration notice

最近,我们将Web应用程序的PHP版本从版本5. [something]迁移到了7.2,并设置了apache2 php.ini以避免通知在服务器和浏览器中记录。有人告诉我,在迁移之前,安装程序运行良好,但现在到处都显示通知。

这是设置:

error_reporting = E_ALL & ~E_NOTICE

我尝试过

error_reporting = E_ALL ^ (E_DEPRECATED & E_NOTICE)

也无济于事。没有.htaccess文件会覆盖设置,并且当我将error_reporting变量设置为其他值时,应用程序会报告error_reporting状态发生变化,只是当我指定不希望使用E_NOTICE ,则该设置无法正常工作。

这是处理错误的配置摘要:

display_errors = On
;error_reporting = E_ALL ^ E_DEPRECATED
;error_reporting = E_ALL ^ (E_DEPRECATED & E_NOTICE)
;error_reporting = E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR
error_reporting = E_ALL & ~E_NOTICE
;E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

我们希望避免同时在服务器和浏览器中记录通知。有什么想法可能有问题吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我建议您不要隐藏notices,而应尝试编写不产生php的{​​{1}}应用程序。隐藏此信息不是一种好的编程技术,通常会留下无法解决的漏洞或错误。

无论如何,将您的notices放在开头就可以解决您的问题:

script

这将关闭error_reporting(E_ALL ^ E_NOTICE); ...

我建议您阅读manual

要在您的notices中设置此值(php.ini不是php.ini Apache文件,而是configuration php文件)可以使用(因为您已经在使用):

configuration

别忘了更改

error_reporting = E_ALL & ~E_NOTICE

使用

display_errors = On

在您的display_errors = Off 中,别忘了停止php.ini并重新启动以查看更改...

请参见此thread和此thread

希望这会有所帮助。

答案 1 :(得分:0)

我们设法解决了这个问题,我们的一个库(PEAR的cache-lite)具有一行代码,该行以编程方式在第25行的文件/usr/share/php/Cache/Lite.php中设置了日志记录代码,

error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);

我们将其注释掉,现在一切正常。谢谢大家!