防止调用 error_reporting() 和/或 ini_set('display_errors', 'On') 覆盖 php.ini 设置
我的 php.ini 文件中有这样的设置:
error_reporting = E_ERROR|E_PARSE|E_CORE_ERROR|E_COMPILE_ERROR
但我仍然每分钟在错误日志中收到数千条“通知”和“警告”条目。我当然意识到我会更好地处理这些错误,但这不是我的代码,我也没有得到报酬来做这件事,我只需要摆脱那些肥胖的 error_log 文件(每天 Gbs)。
我搜索了代码并删除了所有 error_reporting()
调用,这达到了目的,但是有没有办法禁止 error_reporting()
覆盖 php.ini 设置?
我还可以阻止对 ini_set('display_errors')
的调用覆盖 php.ini 设置吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
或许。
如果您在 Apache 下使用 mod_php(或通过 FPM 的 FastCGI),则可以使用 < code>php_admin_value 和
php_admin_flag
来强制某些 INI 设置,使得ini_set
无法覆盖。不幸的是,除了 error_reporting rel="nofollow">
disable_functions
——但这会在每次使用时抛出 PHP 警告。(顺便说一句,我觉得奇怪的是,开发人员会在生产中设置错误报告级别,但仍然会生成如此大量的日志。)
Maybe.
If you're using mod_php under Apache (or FastCGI via FPM), you can use
php_admin_value
andphp_admin_flag
to force certain INI settings in such a way thatini_set
will be unable to override.Unfortunately I don't know of a way to neuter
error_reporting
other thandisable_functions
-- but this will throw a PHP Warning every time it's used.(As a side note, I find it curious that a developer would set an error reporting level in production and still be producing such a high volume of logs.)
您可以尝试
disable_functions
php.ini 设置并关闭error_reporting()
和ini_set()
。但这完全禁用了它们,因此如果您需要在运行时更改除 error_reporting 之外的设置,那么您就可以了。You could try the
disable_functions
php.ini setting and turn offerror_reporting()
andini_set()
. But that COMPLETELY disables them, so if you need to change settings other than error_reporting at runtime, you'd be SOL.根据以下页面,PHP 引擎设置可以设置配置选项的时间和位置。无法以编程方式阻止它:
http://www.php。 net/manual/en/configuration.changes.modes.php
http://php.net/manual/en/errorfunc.configuration.php
According to the following pages, the PHP engine sets when and where a configuration option can be set. There is no way to prevent it programmatically:
http://www.php.net/manual/en/configuration.changes.modes.php
http://php.net/manual/en/errorfunc.configuration.php