PHP错误报告级别及调整方法

运行PHP脚本时,PHP解析器会尽其所能能报告它遇到的问题。在PHP中错误报告的处理行为,都是通过PHP的配置文件php.ini中有关的配置指令确定的。另外PHP的错误报告有很多种级别,可以根据不同的错误报告级别提供对应的调试方法。一旦把PHP设置成呈现出发生了哪些错误,你可能想调整错误报告的级别。在下表中列出了PHP中大多数的错误报告级别。

PHP错误报告级别及调整方法_第1张图片

如果开发人员希望在PHP脚本中,遇到表中的某个级别的错误时,将错误消息报告给他,则必须在配置文件php.ini中,将display_errors指令的值设置为On,开启PHP输出错误报告的功能。也可以在PHP脚本中调用ini_set()函数,动态设置配置文件php.ini中的某个指令。(注意:如果display_errors被启用,就会现实满足已设置的错误级别的所有错误报告。当用户访问网站时,看到现实的这些消息不仅会赶到迷惑,而且还可能会过多的泄漏有关服务器的信息,使服务器变得很不安全。所以在项目开发或测试期间启用此指令,可以根据不同的错误报告更好地调试程序。出于安全性和美感的目的,在网站投入使用时要将其禁用)。

当你正在开发站点时,会希望PHP报告特定类型的错误,可以通过调整错误报告的级别实现。可以通过以下两种方法设置错误报告级别。
★可以通过在配置文件php.ini中,修改配置指令error_reporting的值,修改成功后重新启动Web服务器,则每个PHP脚本都可以按调整后的错误级别输出错误报告。下面是修改php.ini配置文件的示例,列出几种为error_reporting指令设置不同级别值的方式,可以把位运算符[&(与)、|(或)|(非)]和错误级别常量一起使用。如下所示:

PHP错误报告级别及调整方法_第2张图片

★或者可以在PHP脚本中使用error_reporting()函数,基于各个脚本来调整这种行为。这个函数用于确定PHP应该在特定的页面内报告哪些类型的错误。该函数获取一个数字或上表中错误级别常量作为参数。如下所示:

error_reporting(0);           //设置为0会完全关闭错误报告
error_reporting(E_ALL);               //将会向PHP报告发生的每个错误
erroro_reporting(E_ALL & ~E_NOTICE);             //可以抛出任何非注意的错误报告

在下面的示例中,我们在PHP脚本中分别创建一个“注意”、一个“警告”和一个致命“错误”。并通过设置不同的错误级别,限制程序输出没有被允许的错误报告。创建一个名为error.php的脚本文件,代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head><title>测试错误报告</title></head>
<body>
<h2>测试错误报告</h2>
<?php
//开启php.ini中的display_errors指令,只有该指令可以开启如果有错误报告才能输出
ini_set ( 'display_errors' ,1);
//通过error_reporting()函数设置在本脚本中,输出所有级别的错误报告
error_reporting (E_ALL);
//注意(notice)的报告,不会组织脚本的执行,但是不会组织脚本的执行,并且可能不一定是一个问题
getType ( $var ); //调用函数时提供的参数变量没有在之前声明
//警告(warning)的报告,指示一个问题,但是不会组织脚本的执行
getType (); //调用函数时没有提供必要的参数
get_Type(); //调用一个没有被定义的函数
?>
</body>
</html>

在上面的脚本中,为了确保配置文件中的display_errors指令开启,通过ini_set()函数强制在该脚本执行中启动,并通过error_repoting()函数设置错误级别为E_ALL,报告所有错误、警告和错误,PHP脚本只有在遇到错误时才会终止运行。

“注意”和“警告”的错误报告并不会终止程序运行。如果在上面的输出结果中,不希望有注意和警告的报告输出,就可以在脚本error_reporting()函数,修改的代码如下所示:

error.php中修改error_reporting(E_ALL&~(E_WARNING|E_NOTICE)); //报告除注意和警告之外的所有错误

除了使用error_reporting 和display_error两个配置指令可以修改错误报告行为以外,还有许多配置指令可以确定PHP的错误报告行为。其他的一些重要指令如下表所示:PHP错误报告级别及调整方法_第3张图片

使用trigger_error()函数来替代die()

首先函数die()等同于exit(),两者如果执行都会终止PHP程序,而且可以在退出程序之前输出一些错误报告。trigger_error()则可以生成一个用户警告来代替,使程序更具有灵活性。例如,trigger_error(“没有找到文件”,E_USER_ERROR)。使用trigger_error()函数来代替die(),你的代码在处理错误上会更具优势,对于客户程序员来说更易于处理错误。

 

 

你可能感兴趣的:(PHP)