最近,我们将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
我们希望避免同时在服务器和浏览器中记录通知。有什么想法可能有问题吗?
谢谢!
答案 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
并重新启动以查看更改...
希望这会有所帮助。
答案 1 :(得分:0)
我们设法解决了这个问题,我们的一个库(PEAR的cache-lite)具有一行代码,该行以编程方式在第25行的文件/usr/share/php/Cache/Lite.php
中设置了日志记录代码,
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
我们将其注释掉,现在一切正常。谢谢大家!