如何将 PHP 配置为在运行时忽略 error_reporting()


How can I configure PHP to ignore error_reporting() at runtime?

我正在运行一个充斥着error_reporting调用的应用程序,但我运行的是PHP 5.5,它有很多折旧的警告。我已经像这样正确配置了我的 php.ini 文件。

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

但是所有的 error_reporting() 调用都会覆盖它。有什么方法可以忽略对 error_reporting() 的运行时调用?

更改所有 error_reporting() 调用真的很麻烦,特别是因为应用程序需要定期更新,并且我想避免运行安装后黑客脚本。

我不想提到应用程序的名称,它是VBulletin 5。

有一个 ini 设置disable_functions ,您可以使用它来禁用error_reporting()功能。这样,应用程序就无法通过此功能设置错误报告级别。

disable_functions = error_reporting

只能使用此指令禁用内部函数。用户定义的函数不受影响。 此指令必须在 php 中设置.ini例如,您不能在 httpd.conf 中设置此指令。

请参阅:http://www.php.net/manual/en/ini.core.php#ini.disable-functions

如果您可以控制 Web 服务器配置,则可以使用 php_admin_valueerror_reporting设置为无法覆盖的值。

根据文档,这不能在 .htaccess 文件中使用,因此您必须在整个服务器上使用它......也许有点太多了。

另一种可能性是使用disable_functions禁用error_reporting。缺点是每次使用它时都会收到警告,但您可以解决这个问题:

您可以在 php 中添加一个仅影响指定脚本的部分.ini:

[PATH=<path>]
error_reporting = 0
disable_functions = "error_reporting"