【问题标题】:What are the reasons why PHP would echo errors, even with error_reporting(0)?即使使用 error_reporting(0),PHP 也会回显错误的原因是什么?
【发布时间】:2010-09-09 20:21:57
【问题描述】:

PHP 强制显示错误的一些原因是什么,无论您告诉它禁用什么?

我试过了

error_reporting(0);
ini_set('display_errors', 0); 

没有运气。

【问题讨论】:

  • 我不知道这个答案,但如果可能的话,如果您提供一个在报告关闭时显示的错误示例可能会有所帮助。
  • 解析错误:语法错误,意外的 T_VARIABLE,期待 ',' 或 ';'在第 11 行的 /usr/home/johnq/public_html/dev.php 中,dev.php 中唯一的 PHP 是:
  • 如果没有该错误消息,您可能需要更长的时间才能意识到您的脚本没有运行仅仅是因为缺少分号。

标签: php error-reporting ini-set


【解决方案1】:

请注意手册中的警告http://uk.php.net/error_reporting

大多数 E_STRICT 错误是在编译时评估的,因此此类错误不会在增强 error_reporting 以包含 E_STRICT 错误的文件中报告(反之亦然)。

如果您的底层系统配置为报告 E_STRICT 错误,则这些错误可能会在您的代码被考虑之前就被输出。不要忘记,error_reporting/ini_set 是运行时评估,在“运行前”阶段执行的任何操作都不会看到它们的效果。


根据您的评论,您的错误是...

解析错误:语法错误,意外的 T_VARIABLE,需要 ',' 或 ';'在第 11 行的 /usr/home/REDACTED/public_html/dev.php 中

那么同样的一般概念也适用。您的代码永远不会运行,因为它在语法上无效(您忘记了“;”)。因此,永远不会遇到您更改错误报告的情况。

解决此问题需要更改系统级错误报告。例如,在 Apache 上,您可以放置​​...

php_value error_reporting 0

在 .htaccess 文件中将它们全部隐藏,但这取决于系统配置。

务实,不要写有语法错误的文件:)

【讨论】:

    【解决方案2】:

    为防止显示错误,您可以

    • 在 .htaccess 中写入:php_flag display_errors 0
    • 将代码拆分为单独的模块,其中 主(父)PHP 文件只设置 error_logging 然后 include() 其他文件。

    【讨论】:

      【解决方案3】:

      使用phpinfo 查找加载的php.ini 并对其进行编辑以隐藏错误。它会覆盖您在脚本中输入的内容。

      【讨论】:

        【解决方案4】:

        set_error_handler() 是否在您的脚本中的任何位置使用?这会覆盖error_reporting(0)

        【讨论】:

          【解决方案5】:

          务实,不要写有语法错误的文件:)

          为确保您的文件中没有语法错误,请运行以下命令:

          php -l YOUR_FILE_HERE.php
          

          这将输出如下内容:

          PHP Parse error:  syntax error, unexpected '}' in Connection.class.php on line 31
          

          【讨论】:

            【解决方案6】:

            只需在您的 index.php 文件中添加以下代码:

            ini_set('display_errors', False);
            

            【讨论】:

              【解决方案7】:

              使用 log_errors 来记录而不是显示它们。

              【讨论】:

              • 不幸的是,仍然会导致同样的错误。我正在寻找一种无需修改 php.ini 即可做到这一点的方法。这可能吗?
              【解决方案8】:

              如果在 Apache 中使用 php_admin_value 指定设置,则无法在 .htaccess 或运行时更改。

              见:How to change configuration settings

              【讨论】:

                猜你喜欢
                • 2019-12-28
                • 1970-01-01
                • 2010-12-27
                • 1970-01-01
                • 2012-12-08
                • 2021-07-05
                • 2020-03-26
                • 2021-01-10
                • 1970-01-01
                相关资源
                最近更新 更多