即使使用 error_reporting(0),PHP 仍会回显错误的原因是什么?
-
09-06-2019 - |
题
无论您告诉它禁用什么,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,期望','或';'在/usr/home/redacted/public_html/dev.php中
那么同样的一般概念也适用。您的代码永远不会运行,因为它在语法上无效(您忘记了“;”)。因此,您对错误报告的更改永远不会遇到。
修复此问题需要更改系统级错误报告。例如,在 Apache 上您可以放置...
php_value 错误报告 0
在 .htaccess 文件中以抑制所有这些,但这取决于系统配置。
实际上,不要编写有语法错误的文件:)
其他提示
为了防止显示错误,您可以
- 在.htaccess中写入: php_flag 显示错误 0
- 将代码分开在单独的模块中,其中主(父)php文件仅设置error_logging,然后包括()其他文件。
使用 php信息 找到加载的 php.ini 并编辑它以隐藏错误。它会覆盖您在脚本中放入的内容。
是 set_error_handler()
在脚本中的任何地方使用?这会覆盖 error_reporting(0)
.
使用 log_errors 来记录而不是显示它们
如果该设置是在 Apache 中使用 php_admin_value 指定的,则无法在 .htaccess 或运行时更改该设置。看: http://docs.php.net/configuration.changes
实际上,不要编写有语法错误的文件:)
为确保文件中没有语法错误,请运行以下命令:
php -l YOUR_FILE_HERE.php
这将输出类似这样的内容:
PHP Parse error: syntax error, unexpected '}' in Connection.class.php on line 31
只需将以下代码添加到您的 索引.php 文件:
ini_set('display_errors', False);