获取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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
php 时间计算问题小结
Jan 04 PHP
PHP防止跨域提交表单
Nov 01 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
php实现webservice实例
Nov 06 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
Jun 23 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
thinkphp5使用无限极分类
Feb 18 PHP
PHP中的自动加载操作实现方法详解
Aug 06 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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 随机数的深入理解
2013/06/05 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
js DOM模型操作
2009/12/28 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
javascript事件模型介绍
2016/05/31 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
Python遍历目录的4种方法实例介绍
2015/04/13 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
创建Django项目图文实例详解
2019/06/06 Python
超简单的Python HTTP服务
2019/07/22 Python
python应用文件读取与登录注册功能
2019/09/23 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
办公室主任先进事迹
2014/01/18 职场文书
浪费资源的建议书
2014/03/12 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
房屋认购协议书
2015/01/29 职场文书
教学副校长工作总结
2015/08/13 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书