PHP

PHP错误类型以及处理方法

PHP中的错误类型

  • Notice 提醒
<?php
echo $a;
echo 123;

01.png
未定义变量
不阻碍代码的执行

  • Warning 警告
<?php
include '12314';
echo 123;

02.png
不阻碍代码的执行

  • Deprecated 不赞成的 将要被废弃的
<?php
mysql_connect();
echo 123;

03.png
不阻碍代码的执行

  • Fatal error 致命错误
<?php
require '12314';
echo 123;

04.png
阻碍代码执行

  • Parse error 解析/语法错误
<?php
echo 123 // 没有分号
echo 123;

05.png
阻碍代码执行

错误的处理方法

一般情况下 我们在开发当中,应该打开报错信息,但是生产环境当中,不应该让客户看到报错信息(即便我们有错误)

  • 错误抑制符
    即@符 但是不建议使用;代码量增多,不便于维护
<?php
@require '12314';
echo 123;
  • 修改配置
    修改配置文件可以关闭所有错误
<?php
ini_set('error_reporting',0);
echo $a;
echo 123;

这样可以使单文件生效,或者修改php.ini,使全局生效,on为开启,off为关闭;但是不够灵活
可以通过error_reporting设置错误汇报级别

<?php
error_reporting(E_ALL^E_NOTICE);
echo $a;
echo 123;

如果我们想把错误写入日志呢?

  • 屏蔽报错 开启日志
<?php
ini_set('error_log','./errors.log');
ini_set('display_errors',0);

echo $a;
echo 123;

运行后会将错误信息写在errors.log中

  • 自定义错误处理器
<?php
set_error_handler('myhandler');
//定义错误的处理方式
// 参数一 错误级别
// 参数二 错误信息
// 参数三 错误发生的文件名
// 参数四 错误发生的行号
function myhandler($err_level,$err_info,$err_file,$err_line){
    $str = "错误信息是";
    $str .= $err_info;
    $str .= "错误行号是";
    $str .= $err_line;
    $str .= "\r\n";
    echo $str;
    error_log($str,3,"./log.txt");
}
echo $abc;
微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.