为什么不在PHP中使用最高错误报告级别?

时间:2009-06-24 06:17:34

标签: php error-reporting

我希望您说明为什么有人不应该在PHP中使用尽可能高的错误报告级别?

设置最高级别的方法:

PHP< 5.4:

error_reporting(E_ALL | E_STRICT);

PHP> = 5.4:

error_reporting(E_ALL);

PHP 所有版本(建议用于config files):

error_reporting(2147483647);

PHP 所有版本(我的配置,-1将包含所有错误并且易于记忆)

error_reporting(-1);

我的经历:

4 个答案:

答案 0 :(得分:22)

我个人更喜欢以最高级别的错误报告进行编码,并修复我的代码生成的所有警告。但是,我可以设想一些原因,您可能希望在较低级别工作:

  1. 您可能正在处理发出大量警告的遗留代码。如果代码正常工作,这不是问题,但“噪音”可能会分散注意力并阻止您看到真正的问题。在这种情况下,可能需要降低错误报告级别。
  2. 在生产环境中,您可能只想记录错误。这有两个好处,它意味着您的错误日志仅包含需要注意的关键问题,并且它将节省磁盘空间(并减少磁盘I / O)。
  3. 关闭主题:在生产环境中,您应该运行“display_errors = Off”和“error_logging = On”以防止用户看到PHP错误(可能包含敏感信息,例如数据库连接属性),并收集错误日志他们发生了。因此,您的生产error_reporting级别和相关设置可能与您希望在开发中运行的不同。

答案 1 :(得分:2)

我认为没有充分的理由,除了Jim在他的第一点所说的,运行不能或不会改变的遗留代码。

你应该在开发过程中以最高级别运行它并消除所有警告和通知,除非你有充分的理由不这样做。

如果你有充分的理由不在开发过程中修改通知,你应该记录它并使用错误控制操作符来避免日志混乱。

答案 2 :(得分:1)

除了Jim的观点之外,我总是建议使用最高级别的错误报告进行编码,因为它应该为您提供更好的可移植性和(可疑的)更好的性能。

答案 3 :(得分:0)

从一个系统管理员PoV ......有时你无法对代码 - 遗产或新代码做些什么。一些开发人员没有正确调试,如果你浪费任何时间用一些并不重要的东西(不确定这是否会让任何人感到不安,但如果结果在前后相同,那么经理会看着你好笑)那真的不重要)。我非常高兴我可以禁用通知并专注于任何真正的问题。

此外,这只是一个黑暗中的镜头,但也许有一些方法可以通过使用error_log()调用在调试方面做一些有点花哨的事情。