如何通过目录禁用错误?

问题描述:

我们正在编写基于库的PHP应用程序,它有很多声明和严格的标准警告。如何通过目录禁用错误?

我们希望通过完整的错误报告来开发我们的应用程序。我们现在不能这样做,因为lib导致很多错误。我们想要抑制这个库中的所有错误,只在我们的开发机器上显示我们的应用程序。

在set_error_handler函数的帮助下,我已经可以实现它了。

是否有任何其他方式来做到这一点可能在php.ini或虚拟主机级别?

对于Apache:
的添加到.htaccess文件(或者在虚拟主机配置):

php_value error_reporting 1 

但只有当阿帕奇解析URL可以通过用于这种分离。
让你有这样的文件夹:

/www/dir/
/models/
/lib/

而且的.htaccess放在/www/dir/lib

如果您打电话给URL example.com/dir,那么.htaccess将被Apache解析并且设置将被设置。
但在'include /lib/some.php'的情况下 - Apache不会解析lib.htaccess不会产生任何影响。

+0

这将是无用的,因为警告正在库(包括)中发生,'.htaccess'设置仅指在给定目录中直接打开的文件。 – 2011-05-18 20:18:08

+0

@ dev-null-dweller:'.htaccess'文件由apache针对每个请求进行评估,该文件与给定目录中的文件相匹配。一旦它被评估,它并不关心包含哪些其他文件。 – KingCrunch 2011-05-18 20:25:45

+0

@ dev-null-dweller你确定这是正确的吗? – 2011-05-18 20:26:03

简答题:没有。

通过检查导致错误的文件的路径来过滤错误与自定义功能和set_error_handler是最好的,你可以做的。

其他的解决方案,可能会更好,但只在某些条件下(如果存在且具有相同的功能)这个库中自己

  • 解决问题(如果许可证允许它的库

    • 新版本)
    • 禁用错误报告,包括图书馆和后启用它(如果不包括实际使用过程中发生的大多数错误)
  • 我发现我之前t的可能前置脚本:php_value auto_prepend_file prepend.php

    因此,我可以预先使用我自己的error_handler脚本。这样我就可以通过vhost/php.ini指令触发这个。

    感谢您的所有输入。