在使用 php 进行开发时,我们经常会遇到各种各样的错误。这些错误信息通常会帮助我们快速排查和解决代码中的问题。然而,在生产环境中,我们可能不希望将这些错误暴露给用户。为此,php 提供了错误级别控制功能,让我们可以自由地控制错误的显示方式。
PHP 的错误级别分为 8 个等级,分别是:
E_ERROR: 致命错误,必须解决,否则代码无法继续执行;E_WARNING: 警告错误,不会导致代码停止执行,但需要修复;E_PARSE: 语法解析错误,通常是由代码语法错误导致;E_NOTICE: 通知错误,不会导致代码停止执行,但需要修复;E_CORE_ERROR: 内核致命错误,例如PHP内核初始化时发生的错误;E_CORE_WARNING: 内核警告错误;E_COMPILE_ERROR: 编译致命错误,例如包含的文件不存在等;E_COMPILE_WARNING: 编译警告错误。
PHP 的默认错误级别是 E_ALL,也就是开启了所有级别的错误提示。在开发时,这个级别非常有用,可以帮助我们尽早发现和解决错误。但在生产环境中,我们通常不希望将错误信息暴露给用户,这时我们可以通过更改错误级别来达到控制错误信息的目的。
更改错误级别的方式有两种:在代码中使用 ini_set 函数进行配置,或者修改 PHP 配置文件 php.ini。以下是两种方式的介绍。
使用 ini_set 函数更改错误级别
ini_set 函数允许我们在代码中临时更改 PHP 的配置项。我们可以使用该函数更改 PHP 的错误级别。下面的代码示例演示了如何将错误级别设置为 E_ALL & ~E_NOTICE & ~E_WARNING,即关闭通知和警告提示:
立即学习“PHP免费学习笔记(深入)”;
// 设置错误级别为E_ALL & ~E_NOTICE & ~E_WARNINGini_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 是否显示某些类型的错误信息。
修改 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 更改错误级别的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2000118.html