首页  >  文章  >  后端开发  >  php 更改错误级别

php 更改错误级别

PHPz
PHPz原创
2023-05-07 10:58:08756浏览

在使用 PHP 进行开发时,我们经常会遇到各种各样的错误。这些错误信息通常会帮助我们快速排查和解决代码中的问题。然而,在生产环境中,我们可能不希望将这些错误暴露给用户。为此,PHP 提供了错误级别控制功能,让我们可以自由地控制错误的显示方式。

PHP 的错误级别分为 8 个等级,分别是:

  1. E_ERROR: 致命错误,必须解决,否则代码无法继续执行;
  2. E_WARNING: 警告错误,不会导致代码停止执行,但需要修复;
  3. E_PARSE: 语法解析错误,通常是由代码语法错误导致;
  4. E_NOTICE: 通知错误,不会导致代码停止执行,但需要修复;
  5. E_CORE_ERROR: 内核致命错误,例如PHP内核初始化时发生的错误;
  6. E_CORE_WARNING: 内核警告错误;
  7. E_COMPILE_ERROR: 编译致命错误,例如包含的文件不存在等;
  8. E_COMPILE_WARNING: 编译警告错误。

PHP 的默认错误级别是 E_ALL,也就是开启了所有级别的错误提示。在开发时,这个级别非常有用,可以帮助我们尽早发现和解决错误。但在生产环境中,我们通常不希望将错误信息暴露给用户,这时我们可以通过更改错误级别来达到控制错误信息的目的。

更改错误级别的方式有两种:在代码中使用 ini_set 函数进行配置,或者修改 PHP 配置文件 php.ini。以下是两种方式的介绍。

  1. 使用 ini_set 函数更改错误级别

ini_set 函数允许我们在代码中临时更改 PHP 的配置项。我们可以使用该函数更改 PHP 的错误级别。下面的代码示例演示了如何将错误级别设置为 E_ALL & ~E_NOTICE & ~E_WARNING,即关闭通知和警告提示:

// 设置错误级别为E_ALL & ~E_NOTICE & ~E_WARNING
ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_WARNING);

// 执行代码
echo $undefinedVariable;

上述代码中,我们先用 ini_set 函数将错误级别设置为 E_ALL & ~E_NOTICE & ~E_WARNING,然后故意访问了一个未定义的变量 $undefinedVariable。由于我们关闭了通知和警告提示,PHP 并不会将 Undefined variable: undefinedVariable 这个 notice 错误提示给我们。然而,如果我们将错误级别设置为 E_ALL,在访问未定义的变量时,PHP 会抛出如下错误:

Notice: Undefined variable: undefinedVariable in /path/to/file.php on line 5

因此,通过更改错误级别,我们可以控制 PHP 是否显示某些类型的错误信息。

  1. 修改 PHP 配置文件 php.ini 更改错误级别

除了在代码中使用 ini_set 函数配置错误级别,我们也可以在 php.ini 配置文件中进行配置。php.ini 配置文件对整个 PHP 系统生效,在每个 PHP 文件中都可以访问配置项中的值。以下是 php.ini 配置文件中与错误级别相关的配置项:

; 显示所有错误
error_reporting = E_ALL

; 显示 E_NOTICE、E_WARNING 和 E_ERROR 级别的错误
error_reporting = E_ERROR | E_WARNING | E_NOTICE

; 显示所有错误,除了 E_NOTICE 级别的错误
error_reporting = E_ALL & ~E_NOTICE

为了对生产环境进行保护,我们通常会将错误级别设置为 E_ALL & ~E_NOTICE & ~E_WARNING。这样就可以关闭通知和警告提示,只显示致命错误和解析错误。

总结

在开发过程中,我们希望尽早地发现和解决错误,因此默认开启所有错误级别的提示非常有用。然而,在生产环境中,我们通常不希望将错误信息暴露给用户,因此需要更改错误级别来控制错误信息的显示方式。我们可以通过 ini_set 函数或者修改 PHP 配置文件 php.ini 来实现这个功能。在实际使用中,我们应该根据实际需要,灵活地配置错误级别,以便进行及时的错误排查和解决。

以上是php 更改错误级别的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn