提问人:Valdemarick 提问时间:9/17/2008 最后编辑:Peter MortensenValdemarick 更新时间:4/22/2020 访问量:48613
PHP即使使用error_reporting(0)也会回显错误的原因是什么?
What are the reasons why PHP would echo errors, even with error_reporting(0)?
问:
PHP会强制显示错误,不管你告诉它禁用什么,是什么原因?
我试过了
error_reporting(0);
ini_set('display_errors', 0);
没有运气。
答:
请注意手册中 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文件中以全部禁止它们,但这取决于系统配置。
实际上,不要编写带有语法错误的文件:)
使用log_errors来记录它们,而不是显示它们。
评论
要防止显示错误,您可以
- 写一个 .htaccess: php_flag display_errors 0
- 将代码拆分为单独的模块,其中 main(父)PHP 文件仅设置 error_logging,然后 include() 的 其他文件。
如果在 Apache 中使用 php_admin_value 指定了该设置,则无法在 .htaccess 中或在运行时更改该设置。
请参见: 如何更改配置设置
使用 phpinfo 查找加载的php.ini并对其进行编辑以隐藏错误。它会覆盖您在脚本中输入的内容。
是否在脚本中的任何位置使用?这将覆盖 .set_error_handler()
error_reporting(0)
实际上,不要编写带有语法错误的文件:)
若要确保文件中没有语法错误,请运行以下命令:
php -l YOUR_FILE_HERE.php
这将输出如下内容:
PHP Parse error: syntax error, unexpected '}' in Connection.class.php on line 31
只需在index.php文件中添加以下代码:
ini_set('display_errors', False);
评论