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

最近我们将 webapp 的 PHP 版本从版本 5.[something] 迁移到 7.2,并且我们的 apache2php.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

我们希望避免在服务器和浏览器中记录通知。关于可能出错的任何想法?


拉丁的传说
浏览 169回答 2
2回答

斯蒂芬大帝

我们设法解决了这个问题,我们的一个库(PEAR 的 cache-lite)有一行代码,可以在文件/usr/share/php/Cache/Lite.php的第 25行以编程方式设置日志记录代码,这里是error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);我们将其注释掉,现在一切正常。谢谢大家!

慕无忌1623718

我建议您不要隐藏,而是notices尝试编写php不生成notices. 隐藏此信息不是一种好的编程技术,并且经常会留下未解决的漏洞或错误。无论如何,您的问题可以通过放入您的script(开始时)解决:error_reporting(E_ALL ^ E_NOTICE);这将关闭notices...我建议你阅读手册要在您的php.ini(php.ini不是Apache configuration文件,而是php configuration文件)中设置此值,您可以使用(因为您已经在使用):error_reporting = E_ALL & ~E_NOTICE并且不要忘记改变display_errors = On和display_errors = Off在您的 中php.ini,不要忘记停止Apache并再次重新启动以查看更改...See this thread and this threadHope this helps.
打开App,查看更多内容
随时随地看视频慕课网APP