今天,我们将看到如何在PHP中使用error_reporting 函数进行调试。
error_reporting 函数允许你配置哪些错误将在你的PHP脚本中被报告。事实上,当你在PHP脚本中使用error_reporting 函数时,它只是在运行时设置error_reporting 指令。如果你知道php.ini配置文件,它为不同的目的提供了很多配置指令,而error_reporting 指令就是其中之一。具体来说,error_reporting 指令允许你在你的 PHP 脚本中设置错误报告级别。
在这篇文章中,我们将介绍error_reporting 的基本原理,并讨论如何在日常的PHP开发中有效使用它。
语法
让我们快速浏览一下error_reporting 函数的语法。
error_reporting(int $error_level = null): int
它需要一个参数,允许你传递你想设置的错误级别。这是一个可选的参数,所以如果你不传递它,它应该返回当前的错误报告级别。
你可以在这个参数中传递一个位掩码或命名的常数。然而,为了兼容未来的PHP版本,建议传递命名的常量。另外,如果使用命名的常量,也会增加代码的可读性。
在error_reporting 函数的第一个参数中,可以传递不同的错误常量。以下是所有常量的快速列表。
E_ERROR:显示致命的运行时错误E_WARNING: 显示运行时警告E_PARSE: 显示编译时的解析错误E_NOTICE: 显示运行时通知E_CORE_ERROR:显示在PHP初始启动时发生的致命错误E_CORE_WARNING:显示在 PHP 初始启动时出现的警告E_COMPILE_ERROR:显示致命的编译时错误E_COMPILE_WARNING:显示致命的编译时警告E_USER_ERROR:显示用户生成的错误信息E_USER_WARNING显示用户生成的警告信息:显示用户生成的警告信息E_USER_NOTICE显示用户生成的通知信息:显示用户生成的通知信息E_STRICT建议对你的代码进行修改,以确保最佳的互操作性和向前兼容性E_RECOVERABLE_ERROR显示可捕捉的致命错误E_DEPRECATED: 显示关于在未来版本中不能工作的代码的警告E_USER_DEPRECATED显示错误:类似于E_DEPRECATED,但它只显示用户生成的警告信息。E_ALL显示所有的错误、警告和通知
每个常量都允许你设置不同级别的错误报告。在下一节,我们将看到如何在日常的PHP开发中使用error_reporting 函数。
如何使用error_reporting 函数
在上一节中,我们了解了error_reporting 函数的语法。在这一节中,我们将看到如何在你的PHP脚本中使用它。
显示所有错误
让我们快速浏览一下下面的例子。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo $foo;
?>
在上面的例子中,我们在error_reporting 函数的第一个参数中传递了E_ALL 常数,因此,它将显示我们脚本中的所有错误、警告和通知。如果你运行上述脚本,它应该显示以下错误。
Notice: Undefined variable: foo in /web/demo/error_reporting.php on line 4
因为,我们在使用$foo 变量时没有事先定义它,所以它抛出了一个通知,告知你在实际使用$foo 变量之前应该定义它。
另外,你也可以通过-1 ,而不是下面这段代码中的E_ALL 常量,它将显示所有可能的错误。
<?php
error_reporting(-1);
?>
E_ALL 常数对于调试著名的WSOD(死亡白屏)错误非常有用。
显示除通知外的所有错误
让我们来看看下面的例子。
<?php
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);
echo $foo;
?>
当你使用error_reporting 函数时,你可以使用像&,| 和~ 这样的操作符来省略和过滤特定类型的错误。在上面的例子中,我们想显示所有类型的错误,但通知除外,因此,我们在E_NOTICE 常数前面使用了~ 操作符。如果你运行上述脚本,它将不会显示通知,而如果你只使用E_ALL 常数,它就会显示。
显示通知和警告
在本节中,我们将看到如何只显示特定类型的错误。让我们快速浏览一下下面的例子。
<?php
error_reporting(E_WARNING | E_NOTICE);
ini_set('display_errors', 1);
include "foo_bar.php";
echo $foo;
?>
在上面的例子中,我们指示error_reporting ,我们只想显示警告和通知。正如你所看到的,我们使用了| 操作符,所以它将显示两种类型的错误。
所以这就是在日常的PHP开发中如何使用error_reporting 函数与不同类型的错误常量进行调试的方法。
总结
今天,我们讨论了如何使用PHP中的error_reporting 函数来调试PHP脚本中的错误。我们讨论了如何在开发过程中使用它来显示不同级别的错误。