Home > php教程 > php手册 > body text

获取PHP警告错误信息的解决方法

WBOY
Release: 2016-06-13 11:51:56
Original
1013 people have browsed it

代码如下所示:

复制代码 代码如下:


/**
* 更新非法字符、發送錯誤信息

* @author
* @copyright 2009-06-10
*/
error_reporting(E_ERROR | E_WARNING | E_PARSE);
set_error_handler('displayErrorHandler');//自定義錯誤
//調試信息
echo "time:".date("Y-m-d H:i:s")."\n";
//數據配置
//公共函數
function displayErrorHandler($error, $error_string, $filename, $line, $symbols)
{
    $error_no_arr = array(1=>'ERROR', 2=>'WARNING', 4=>'PARSE', 8=>'NOTICE', 16=>'CORE_ERROR', 32=>'CORE_WARNING', 64=>'COMPILE_ERROR', 128=>'COMPILE_WARNING', 256=>'USER_ERROR', 512=>'USER_WARNING', 1024=>'USER_NOTICE', 2047=>'ALL', 2048=>'STRICT');
    $msg = sprintf("%s: %s at file %s(%s)", $error_no_arr[$error] ,$error_string, $filename, $line);
    if(in_array($error,array(1,2,4))){      
        echo $msg; echo "\n";//調試顯示
        //發送信息
        if($error==1||$error==2) {
            sendBankMsg($error_string); //發送簡訊
            if(strpos($error_string, 'xml_parse(): Bytes:')!==FALSE){
                writeFiltefile($error_string);
            }
        }
    }
}
function hex2bin($hexdata) {
    $bindata = '';
    for($i=0; $i         $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
    }
    return $bindata;
}
function writeFiltefile($error_string)
{
    if(strpos($error_string, 'xml_parse(): Bytes:')===FALSE||strpos($error_string, ' 0x')===FALSE){
        return;
    }          
    //寫入文件
    $filename = 'filtetext.php';
    include($filename);
    $error_string = str_replace('xml_parse(): Bytes:', '', $error_string);
    $error_string = str_replace(' 0x','', $error_string);
    $error_text = hex2bin($error_string);
    $filtetextArr[] = $error_text;
    $tempArr = array_unique($filtetextArr);//去除重復
    $result = implode("','",$tempArr);
    $result = "";
    fileWrite($filename, $result, 'w');  
}
function sendBankMsg($msg)
{
    $timestamp = time();
    $params = "msg=".$msg
             ."&posttime=".$timestamp;  
    $length = strlen($params);
    //创建socket连接
    $domain = "www.admin.com"; //socket域名
    $actionPath = "/action/bank/bankmsg.php"; //文件路徑
    $fp = fsockopen($domain,80);
    //构造post请求的头
    if($fp){
        $header = "POST ".$actionPath." HTTP/1.1\r\n";
        $header .= "Host:".$domain."\r\n";
        $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $header .= "Content-Length: ".$length."\r\n";
        $header .= "Connection: Close\r\n\r\n";
        //添加post的字符串
        $header .= $params."\r\n";
        //发送post的数据
        fputs($fp,$header);
        while (!feof($fp)) {
            $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据
            if ($inheader && ($line == "\n" || $line == "\r\n")) {
                echo $line;
            }
        }
        fclose($fp);
    }
}
function fileWrite($fFileName, $fContent, $fTag = 'w') {
    ignore_user_abort (TRUE);
    $fp = fopen($fFileName, $fTag);
    if (flock($fp, LOCK_EX)) {
        fwrite($fp, $fContent);
        flock($fp, LOCK_UN);
    }
    fclose($fp);
    ignore_user_abort (FALSE);
    return;
}
?>

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template