【问题标题】:Best way to suppress php errors on production servers在生产服务器上抑制 php 错误的最佳方法
【发布时间】:2008-12-01 20:56:15
【问题描述】:

隐藏php错误不显示在浏览器上的最佳方法是什么?

是否会使用以下内容:

ini_set("display_errors", 1);

任何最佳实践技巧也将不胜感激!

我正在记录错误,我只是想确保将 display_errors 值设置为 off(或 0)不会阻止记录错误。

【问题讨论】:

  • 照我说的做,你的错误不会显示,但会被记录。
  • 我喜欢“更好”这个词而不是“最好”这个词。

标签: php error-handling


【解决方案1】:

您也可以使用 apache .htaccess 来记录错误,而无需修改您的代码:

<IfModule mod_php5.c>
  php_flag      display_errors  Off
  php_flag      log_errors      On
  php_value     error_log       logs/errors
</IfModule>

【讨论】:

    【解决方案2】:

    接受的答案对我在 PHP 7.1 上根本不起作用。

    这在生产中按预期工作,将错误记录到提供的文件中并且不向用户显示它们:

        ini_set('display_errors', 'Off');
        ini_set('log_errors', 'On');
        ini_set("error_log", "/absolute/path/to/my/error_log");
    

    【讨论】:

      【解决方案3】:

      最好的方法是记录您的错误,而不是显示或忽略它们。

      此示例会将错误记录到 syslog 中,而不是在浏览器中显示。

      ini_set("display_errors", 0);
      ini_set("log_errors", 1);
      
      //Define where do you want the log to go, syslog or a file of your liking with
      ini_set("error_log", "syslog"); // or ini_set("error_log", "/path/to/syslog/file");
      

      【讨论】:

      • 作为替代“syslog”的提示,您可以放置​​一个文件路径并将日志写入您需要的任何位置。
      【解决方案4】:

      最好的方法?修复错误!

      如果您需要一个快速的临时解决方案,则可以关闭 display_errors,但请确保您将它们记录在某处,因为该设置将使严重/解析错误静默。

      【讨论】:

        【解决方案5】:

        假设您可以控制 php.ini 文件,您可以在该文件中全局进行这些更改,而不是将 ini_set 代码放在所有 php 文件中(您可能会忘记将其放入其中一个文件中)天,这可能对生产不利)。

        【讨论】:

          【解决方案6】:

          在您的开发机器上设置一个环境变量。然后您可以在代码开头检查您的环境,以确保您在开发环境中。 然后你可以使用error_reporting()函数设置PHP的错误报告级别。

          if ( isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel') ) {
              error_reporting(E_ALL);
          } else {
              error_reporting(0);
          }
          

          【讨论】:

            【解决方案7】:

            不幸的是,PHP 分发文件发送了一条关于处理错误消息的混合消息。默认的 php.ini 文件有一些适合生产服务器的设置,还有一些更适合开发服务器的设置。您应该在 dev 中打开所有错误(error_reporting = E_ALLdisplay_errors = On),并在 prod 中关闭(display_errors = off 但指向 log_errors 某处)。但是,请尽量确保没有错误(或已处理)。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-12-23
              • 2017-05-03
              • 2013-08-06
              • 2016-08-09
              • 2010-09-20
              • 2011-07-31
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多