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


Posted in PHP onJune 03, 2013

代码如下所示:

<?php
/**
* 更新非法字符、?送??信息
*  
* @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";
//???渲?BR>//公共函??BR>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 < strlen($hexdata); $i += 2) {
        $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);//去除重??BR>    $result = implode("','",$tempArr);
    $result = "<?php\n\$filtetextArr = array('".$result."');\n?>";
    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"; //文件路??BR>    $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;
}
?>
PHP 相关文章推荐
PHP学习之PHP变量
Oct 09 PHP
针对初学PHP者的疑难问答(1)
Oct 09 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
批量修改RAR文件注释的php代码
Nov 20 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
laravel自定义分页效果
Jul 23 PHP
php插入mysql数据返回id的方法
May 31 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
Laravel框架实现抢红包功能示例
Oct 31 PHP
php cli 小技巧
Jun 03 #PHP
php中用加号与用array_merge合并数组的区别深入分析
Jun 03 #PHP
PHP在线生成二维码代码(google api)
Jun 03 #PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
Jun 03 #PHP
深入php-fpm的两种进程管理模式详解
Jun 03 #PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 #PHP
基于PHP异步执行的常用方式详解
Jun 03 #PHP
You might like
PHP图片库imagemagick安装方法
2014/09/23 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
js中indexof的用法详细解析
2013/12/24 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
Python操作MySQL数据库9个实用实例
2015/12/11 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
Python any()函数的使用方法
2019/10/28 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
django 模版关闭转义方式
2020/05/14 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
业务代表的岗位职责
2013/11/16 职场文书
学年自我鉴定
2014/01/16 职场文书
读后感作文评语
2014/12/25 职场文书
租车协议书
2015/01/27 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
小程序实现文字循环滚动动画
2021/06/14 Javascript
Mysql事务索引知识汇总
2022/03/17 MySQL