【问题标题】:PHP How to correctly handle critical errors notification on a production server.PHP 如何正确处理生产服务器上的严重错误通知。
【发布时间】:2016-04-19 19:59:23
【问题描述】:

通常错误是日志等。但是我应该如何处理生产服务器上需要注意的重要错误。例如,如果我在一个流程中删除了一系列 ORM 模型,并且在流程中的某个地方,模型无法删除。我希望该过程删除尽可能多的对象,而不是向用户抛出任何异常。我还希望开发人员或管理员收到任何重要错误的通知,以便立即修复它们。

过去,我添加了在某些情况下会通过电子邮件向我发送错误的脚本。如果我在开发环境中,它只会抛出异常,但是在生产环境中,它会默默地死掉并通过电子邮件发送错误。

是否有一些方法可以让某些异常变得更加关键,从而使开发人员能够采取行动?我可以创建一个更通用的解决方案。例如,如果抛出严重错误/异常,则始终通过电子邮件将其发送给生产管理员,否则将遵循正常程序(例如日志)。

可能有一些很棒的软件包可以提供解决方案,但如果可能的话,我正在寻找更原生的东西。

【问题讨论】:

    标签: php error-handling runtime-error production-environment


    【解决方案1】:

    您可以使用以下几行将htaccess 文件放在您的站点根目录中。

    # PHP error handling for production servers
    php_flag display_startup_errors off
    php_flag display_errors off
    php_flag html_errors off
    php_flag log_errors on
    php_flag ignore_repeated_errors off
    php_flag ignore_repeated_source off
    php_flag report_memleaks on
    php_flag track_errors on
    php_value docref_root 0
    php_value docref_ext 0
    php_value error_log /home/path/public_html/domain/PHP_errors.log
    php_value error_reporting -1
    php_value log_errors_max_len 0
    

    不要将error_log 放在公共可访问的位置。

    【讨论】:

      【解决方案2】:

      我会记录它们。有几种工具可以监控日志文件并且可以对某些模式做出反应。

      https://www.loggly.com/docs/file-monitoring/

      https://mmonit.com/monit/documentation/monit.html#file_content_testing

      还有更多

      【讨论】:

        【解决方案3】:

        PSR-3 被定义为处理这种情况。如果您使用像Monolog 这样的兼容日志接口,您可以定义在每个环境中如何处理不同的错误级别。也许在开发时您想在屏幕上显示所有内容,而在直播时您可能会将所有内容隐藏在 CRITICAL 下方,并针对上面的所有内容发送 NagiosPushover 警报。

        【讨论】:

        • 好的,我真的需要其他插件/包才能正确运行。
        • 您不需要,不,但如果您这样做,您会为自己节省大量工作。
        猜你喜欢
        • 2014-02-10
        • 2014-09-02
        • 2017-08-03
        • 2011-12-14
        • 1970-01-01
        • 2016-02-05
        • 2014-12-23
        • 1970-01-01
        • 2011-09-07
        相关资源
        最近更新 更多