12

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

设置最高级别的方法:

PHP < 5.4:

error_reporting(E_ALL | E_STRICT);

PHP >= 5.4:

error_reporting(E_ALL);

PHP所有版本(推荐用于配置文件):

error_reporting(2147483647);

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

error_reporting(-1);

我的经历:

4

4 回答 4

23

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

  1. 您可能正在使用会发出大量警告的遗留代码。如果代码正常工作,这不是问题,但“噪音”可能会分散您的注意力并阻止您看到真正的问题。在这种情况下,可能需要降低错误报告级别。
  2. 在生产环境中,您可能只想记录错误。这有两个好处,这意味着您的错误日志仅包含需要注意的关键问题,并且可以节省磁盘空间(并减少磁盘 i/o)。

题外话:在生产环境中,您应该运行“display_errors = Off”和“error_logging = On”以防止用户看到 PHP 错误(可能包含敏感信息,例如数据库连接属性),并在错误发生时收集错误日志。因此,您的生产 error_reporting 级别和相关设置可能与您希望在开发中运行的不同。

于 2009-06-24T06:26:49.653 回答
2

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

您当然应该在开发期间以最高级别运行它,并清除所有警告和通知,除非您有充分的理由不这样做。

如果您有充分的理由在开发过程中不修复通知,则应将其记录下来并使用错误控制运算符以避免日志混乱。

于 2009-06-24T06:35:48.827 回答
1

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

于 2009-06-24T11:16:38.970 回答
0

好吧,从系统管理员 PoV 来看……有时您对代码遗留或新代码无能为力。一些开发人员没有正确调试,如果你把任何人的时间浪费在无关紧要的事情上,经理会觉得你很有趣(不确定这是否会让任何人感到不安,但如果前后结果相同,那么这并不重要)。我很高兴我可以禁用通知并专注于任何实际问题。

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

于 2009-06-26T04:49:13.460 回答