获取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 字符转义 注意事项
May 27 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
为IP查询添加GOOGLE地图功能的代码
Aug 08 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
Smarty foreach控制循环次数的一些方法
Jul 01 PHP
解决php表单重复提交实现方法
Sep 29 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
php输出含有“#”字符串的方法
Jan 18 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
php转换上传word文件为PDF的方法【基于COM组件】
Jun 10 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
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
javascript引用对象的方法代码
2007/08/13 Javascript
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
jQuery简单创建节点的方法
2016/09/09 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
iview的table组件自带的过滤器实现
2019/07/12 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
打造完美自荐信
2014/01/24 职场文书
个人优缺点自我评价
2014/01/27 职场文书
环保倡议书100字
2014/05/15 职场文书
银行求职信范文
2014/05/26 职场文书
植树节标语
2014/06/27 职场文书
入党函调证明材料
2014/12/24 职场文书
工作年限证明范本
2015/06/15 职场文书
mysql脏页是什么
2021/07/26 MySQL