(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');