php中的错误日志管理

(1)常见错误日志

1.常见的NOTICE错误:使用未定义变量、常量未定义2.常见的WARNING错误:函数参数个数不符合定义要求、函数参数的值有问题。3.常见的(FATAL)ERROR错误:调用一个没有定义的函数、引用一个不存在的对象。4.变量的定义是使用赋值语句定义的。如果在程序中使用了未定义过的常量,PHP解析器会将其视为'未定义常量'形式 的字符串。

(2)开启错误日志
display_errors错误回显,一般常用语开发模式,但是很多应用在正式环境中也忘记了关闭此选项。错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利。推荐关闭此选项。 display_errors = On 开启状态下,若出现错误,则报错,出现错误提示 dispaly_errors = Off 关闭状态下,若出现错误,则提示:服务器错误。但是不会出现错误提示
(3)错误报告
display_errors = Off error_reporting = E_ALLini_set('display_errors' ,"off");
(4)记录错误日志
<span style="font-size:18px;">ini_set('display_errors' ,0) ;
error_reporting(-1) ; 
ini_set('error_log' ,'/data1/www/error.log') ;
使用error_log() ;
$message = '错误日志记录' ;
error_log($message) ; </span>

(5)自定义错误
<?php
 header(''content-type : text/html; charset =utf-8);
 error_reporting(-1) ;
 function MyError($error ,$errmsg ,$file ,$line){	 
	  echo "<b> 错误代码 :</b>  [{$errno}] {$errmsg} ".PHP_EOL ; 
	   echo "<b> 错误行号 :</b>  [{$file}] {$line} ".PHP_EOL ; 
 }
 set_error_handler('MyError') ; 
 echo $test ; 
 settype($var, 'xxx') ; 
 test() ;
?>

(6)自定义错误处理类

class MyErrorHandler{

    public $message = '' ;
    public $filename ='' ;
    public $line =0  ;
    public $vars = array()  ;
    protected $_noticeLog = '/data1/www/error.log' ;

    public function __construct($message ,$filename ,$line ,$vars ){
        $this->message = $message ;
        $this->message = $filename ;
        $this->message = $line ;
        $this->message = $vars ;
    }

    public  static function deal($errno, $errmsg ,$filename,$line, $vars){
        $self = new self($errmsg ,$filename ,$line ,$vars);
        switch ($errno){
            case E_USER_ERROR : return $self->dealError() ; break ;
            case E_USER_WARNING : return $self->dealWarning() ; break ;
            case E_USER_NOTICE : return $self->dealNotice() ; break ;
            default : return false;
        }
    }

    public  function dealError(){
        ob_start() ;
        debug_print_backtrace();
        $backtrace = ob_get_flush();
        $errorMsg =
            <<<EOF
        出现致命错误如下 ;
        产生错误文件:{$this->filename}
         产生错误信息:{$this->message}
          产生错误文件:{$this->line}
          追踪信息{$backtrace}
        EOF;
        error_log($errorMsg ,1 ,'59843747@qq.com') ;
        exit; ;
    }

public  function dealWarning(){
        $errorMsg = <<<EOF
        出现警告错误如下 ;
        产生错误文件:{$this->filename}
         产生错误信息:{$this->message}
          产生错误文件:{$this->line}
          追踪信息{$backtrace}
        EOF ;
        error_log($errorMsg ,1 ,59843747@qq.com) ;
        exit; ;
    }


public  function dealNotice(){
        $errorMsg = <<<EOF
        出现警告错误如下 ;
        产生错误文件:{$this->filename}
         产生错误信息:{$this->message}
          产生错误文件:{$this->line}
          追踪信息{$backtrace}
        EOF ;
        error_log($errorMsg ,3 ,$this->_noticeLog) ;
        exit; ;
    }
}

测试使用

error_reporting(-1);
set_error_handler('MyErrorHandler','deal');






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值