首页 > 解决方案 > ini_set("display_errors", "on") 和 error_reporting(E_ALL) 的区别

问题描述

我尝试使用php.ini文件启用错误显示,但这不起作用。

然后尝试添加error_reporting(E_ALL),没有用,之后我尝试了ini_set("display_errors", "on"),这个选项对我有用。我的问题是这些方法如何工作以及何时使用哪个选项?

标签: php

解决方案


ini_set()

php.ini一个在运行时为该本地脚本设置配置的简单函数。

PHP的文档说

设置给定配置选项的值。配置选项将在脚本执行期间保留此新值,并将在脚本结束时恢复。

所以基本上如果你的 PHP 配置没有启用 error_reporting,你可以简单地在你的脚本顶部启用它:

ini_set('display_errors', '1');

ini_set()不排除 PHP 错误,您可以设置 PHP 支持的任何配置。

ini_set('SMTP', 'smtp.gmail.com');
ini_set('smtp_port', 25);

错误报告()

根据 PHP 手册

error_reporting — 设置报告哪些 PHP 错误

error_reporting函数设置错误对最终用户的可见性级别。

这些是您获得的一些报告选项以及它们所代表的含义,大多数都非常简单:

  • 0
    • 关闭所有 PHP 错误显示
  • E_ALL
    • 显示所有错误
  • E_ERROR
    • 致命的运行时错误。这些表示无法恢复的错误,例如内存分配问题。脚本的执行被停止。
  • E_WARNING
    • 运行时警告(非致命错误)。脚本的执行不会停止。
  • E_PARSE
    • 编译时解析错误。解析错误只能由解析器生成。
  • E_NOTICE
    • 运行时通知。指示脚本遇到了可能指示错误的情况,但也可能在正常运行脚本的过程中发生。

我觉得有趣的一点旁注,记住这些关键词是常量,它们包含整数(数字),而不是字符串。例如:

echo E_ALL; // 32767
echo E_ERROR; // 1
echo E_WARNING; // 2
echo E_PARSE; // 4
echo E_NOTICE; // 8

您可以在此处查看 PHP 的所有预定义常量


推荐阅读