【问题标题】:Is hiding/logging errors on a PHP server good practice?在 PHP 服务器上隐藏/记录错误是一种好习惯吗?
【发布时间】:2020-03-25 07:03:56
【问题描述】:

我正在尝试使用我收到的 php 文件和数据库部署一个 PHP 服务器。但是,有很多错误(主要来自未声明使用的变量)。我看过的大多数地方,包括构建它的人,都说要关闭错误消息的显示并将它们放在日志文件中。当我关闭显示并将它们隐藏在日志中时,该站点工作正常,但错误仍然存​​在。

问题是,有很多错误。当我不关闭前端错误显示时,弹出的大量错误通知使页面内容的大小增加了三倍。在非开发服务器上,简单地将错误隐藏在日志中是一种很好的做法吗?

【问题讨论】:

  • 应该在生产环境中隐藏并记录错误。但你也应该修复错误。
  • 关闭错误可能会隐藏真正的错误,而不是草率的编码。如果你有一个充满未定义变量消息的日志文件,那么你怎么能发现偶尔失败的东西。
  • 内部错误不应该出现在网络用户面前,所以是的,你应该隐藏它们并将它们打印到日志中,但也要尝试修复它们或至少控制它们(但你说它们不会影响到功能,所以没有必要)。

标签: php error-handling server


【解决方案1】:

应该隐藏错误并将其记录到文件中,因为它们有时可能包含最好不要向潜在攻击者显示的信息,但您应该修复它们。

如果您忘记经常查看该文件,我所做的就是让 cronjob 每天(在工作时间)检查错误文件 4 次,如果有错误通过电子邮件发送给您并清除日志文件。这样您很可能不会错过任何发生的错误。

您的目标是在该错误文件中包含 0 行(错误和警告),因此您应该越早修复它们越好。

我遇到的一个问题是,在记录其他人创建的一个网站的错误后,我每隔几天就会收到数百个错误。这些错误似乎很奇怪,因为它们都来自同一时刻,并且根据用户未登录时似乎发生的错误并且应该被重定向。它们被 0 分割,未定义的变量...在那种情况下,有一个位置标头重定向,但我仍然遇到大量错误。这些错误帮助我发现在位置重定向后代码仍在执行,因此我只需在位置标头后调用exit() 即可防止发生此错误。如果我不记录它们,我就不会知道它们在那里,并且服务器在执行该代码时仍然会抛出大量错误。

【讨论】:

  • 所以,错误日志的重点是最终修复错误,嗯?很高兴知道。我想我应该让给我代码的人知道他们应该修复错误,而不是仅仅记录错误。
  • 是的,我知道很明显必须修复它们,但我也在尝试提供一种方法来发现错误,而无需查看文件,并且可能导致多个错误的原因被高度忽略.我希望这会有所帮助
  • @N.MORR 您还可以设置错误报告服务,例如 Sentry,它会在错误发生时向您显示应用程序的确切状态(堆栈跟踪、变量等),并且可以创建汇总报告和电子邮件警报。
猜你喜欢
  • 1970-01-01
  • 2012-08-11
  • 2016-03-21
  • 2016-12-11
  • 2022-01-23
  • 2018-07-29
  • 1970-01-01
  • 2018-03-18
  • 2020-06-04
相关资源
最近更新 更多