即使使用error_reporting(0),PHP会回显错误的原因是什么?

时间:2008-09-16 23:21:23

标签: php error-reporting ini-set

为什么PHP会强制显示错误,无论你告诉它禁用什么?

我试过了

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

没有运气。

8 个答案:

答案 0 :(得分:15)

请注意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文件中全部禁止它们,但这取决于系统配置。

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

答案 1 :(得分:3)

为防止错误显示,您可以

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

脚本中的任何位置都使用set_error_handler()吗?这会覆盖error_reporting(0)

答案 4 :(得分:0)

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

答案 5 :(得分:0)

如果使用php_admin_value在Apache中指定了该设置,则无法在.htaccess或运行时更改。 请参阅:http://docs.php.net/configuration.changes

答案 6 :(得分:0)

  

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

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

php -l YOUR_FILE_HERE.php

这将输出如下内容:

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

答案 7 :(得分:0)

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

ini_set('display_errors', False);