2013-10-25 26 views
9

我正在运行一个充满error_reporting调用的应用程序,但我正在运行PHP 5.5,其中有很多折旧的警告。我已经像这样正确配置了我的php.ini文件。如何将PHP配置为在运行时忽略error_reporting()?

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 

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

更改所有error_reporting()调用是一件非常麻烦的事情,尤其是因为应用程序需要定期更新并且我想避免运行安装后的hack脚本。

我不想提的应用程序的名称,这是vBulletin 5.

+0

“我不想提及应用程序的名称,它是VBulletin 5。“是的。如果在应用程序中有一个'error_reporting()'调用,这是对不好的PHP开发人员的暗示。应该通过服务器配置(即'php.ini')设置'error_reporting'。 – feeela

+0

'str_replace('error_reporting','',$ code);';-) –

+0

如果你可以“强制”重新定义一个函数,那将是很好的。就像你可以用JavaScript做的一样。好吧。 –

回答

8

有一个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

+0

一个正确答案的折腾。 –

+6

打击邪恶与极端邪恶。我喜欢! +1 :) –

4

如果你有过可以使用php_admin_value设置error_reporting到无法被重写的值的网络服务器配置控制。

根据the documentation这不能用于.htaccess文件,所以你将不得不在整个服务器上使用它...也许有点太多。

另一种可能性是使用disable_functions来禁用error_reporting。缺点是,你会得到一个警告每次使用的时间,但你可以得到周围:

您可以添加到你的php.ini一节,只影响特定的脚本:

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

哈哈。是的警告,但这是我想到的事情。钽 –