我正在运行一个充满了error_reporting调用的应用程序,但我正在运行PHP 5.5,它有很多折旧的警告。我已正确配置我的php.ini文件。
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
但是所有的error_reporting()调用都会覆盖它。我有什么方法可以忽略对error_reporting()的运行时调用吗?
更改所有error_reporting()调用是一件非常麻烦的事情,特别是因为应用程序需要定期更新,我想避免运行安装后的hack脚本。
我不想提及应用程序的名称,它是VBulletin 5.
答案 0 :(得分:9)
有一个初始设置disable_functions
,您可以使用它来禁用error_reporting()
功能。这样,应用程序无法通过此功能设置错误报告级别。
disable_functions = error_reporting
使用此指令只能禁用内部函数。用户定义的函数不受影响。 必须在php.ini中设置此指令。例如,您不能在httpd.conf中设置它。
请参阅:http://www.php.net/manual/en/ini.core.php#ini.disable-functions
答案 1 :(得分:5)
如果您可以控制网络服务器配置,则可以使用php_admin_value
将error_reporting
设置为无法覆盖的值。
根据the documentation,这不能在.htaccess文件中使用,所以你必须在整个服务器上使用它......可能有点太多了。
另一种可能性是使用disable_functions来禁用error_reporting。缺点是每次使用时都会收到警告,但是你可以解决这个问题:
您可以在php.ini中添加仅影响指定脚本的部分:
[PATH=<path>]
error_reporting = 0
disable_functions = "error_reporting"