php错误处理

错误处理的方式有三种

One:显示错误报告

Two:记录错误日志(不将错误信息输出的标准输出,而是写到某个文件内)

上面两种php系统自动支持的错误处理方式。

Three:采用用户自定义的错误处理器,处理错误。


显示错误报告:

通过下面的错误配置信息完成

Error_reporting: 需要报告的错误级别

Display_errors::是否显示错误信息

可以通过修改php.ini完成,也可以在用户的php脚本内完成(ini_set()函数),但是只针对当前脚本有效。

通过Ini_set();函数,可以设置配置信息(不是所有的配置信息都支持在脚本内设定,但当前这两个是支持的)

语法:

Ini_set(‘需要设置的配置项’, ‘设置的值’);

例如:

不显示所有的错误:

<span style="font-size:18px;"><?php
ini_set('display_errors', '0');//第二个参数设置为0表示不显示错误
$n=9;
if($n<10){
    trigger_error('不能小于10',E_USER_NOTICE);
    trigger_error('不能小于10',E_USER_WARNING);
    trigger_error('不能小于10',E_USER_DEPRECATED);
    
}
?></span>
有选择性的显示错误:

<span style="font-size:18px;"><?php
ini_set('error_reporting',E_ALL & ~E_USER_DEPRECATED);//除了E_USER_DEPRECATED错误,其他错误出现了都会显示
ini_set('display_errors', '1');//第二个参数设置为1表示显示错误
$n=9;
if($n<10){
    trigger_error('不能小于10',E_USER_NOTICE);
    trigger_error('不能小于10',E_USER_WARNING);
    trigger_error('不能小于10',E_USER_DEPRECATED);
    
}
?></span>

记录错误日志:

在生成环境(web服务器上)。

通过php的配置完成(php.ini):

Error_log     指向当前需要记录错误的日志文件

Log_errors 是否记录日志

同样 配置可以在用户脚本修改

<span style="font-size:18px;"><?php
ini_set('error_reporting',E_ALL);
ini_set('display_errors', '0');
ini_set('error_log','D:\test_error');//会自动生成test_error文件
ini_set('log_errors','1');
$n=9;
if($n<10){
    trigger_error('不能小于10',E_USER_NOTICE);
    trigger_error('不能小于10',E_USER_WARNING);
    trigger_error('不能小于10',E_USER_DEPRECATED);
    
}
?></span>

注意,日志同样受error_reporting中的级别影响。如果Error_log不设置(log_errors还是设置为1),采用Apache的错误日志记录错误信息。如果Error_log的值设置为‘Syslog’ ,那么错误会记录在当前操作系统的日志内。

还可以手动,通过用户脚本,将错误信息,记录到日志内。

利用 php函数 error_log()来完成。

<span style="font-size:18px;"><?php
ini_set('error_reporting',E_ALL);//除了E_USER_DEPRECATED错误,其他错误出现了都会显示
ini_set('display_errors', '1');//第二个参数设置为1表示显示错误
ini_set('error_log','D:\test_error');
ini_set('log_errors','1');
$n=9;
if($n<10){
    error_log('n不能小于10');//错误信息会被记录到日志中
}
?></span>

自定义错误处理器:

利用php的系统函数,可以将某个回调函数结构,设置成错误处理器。

一旦设置成功,不会使用系统的错误处理方法,来处理,而是采用用户自定的函数过程来处理。

除非,用户自定义的错误处理函数,返回false。 返回false说明 在自定义处理完毕后,会将错误再交由默认的系统处理器处理。

<span style="font-size:18px;"><?php
ini_set('error_reporting',E_ALL);
ini_set('display_errors', '1');
ini_set('error_log','D:\test_error');
ini_set('log_errors','1');
set_error_handler('hand');
function hand($errno,$errmsg,$errfile,$errline){
    var_dump($errno,$errmsg,$errfile,$errline);
    return false;
}
echo $a;
?></span>

回调函数里面的处理方式,可以根据不同的需要填写,例如将错误存到数据库,或者根据不同的错误级别设置处理方式。回调函数还可以是一个类的静态方法,或者是一个对象的方法,形式多样。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值