获取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 提速工具eAccelerator 配置参数详解
May 16 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
PHP编码转换
Nov 05 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
PHP写日志的实现方法
Nov 05 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
php对文件进行hash运算的方法
Apr 03 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
PHP进程通信基础之信号
Feb 19 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 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读取mysql的简单实例
2014/01/15 PHP
PHP利用APC模块实现文件上传进度条的方法
2015/01/26 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
javascript与CSS复习(二)
2010/06/29 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
vue实现购物车列表
2020/06/30 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Python二分查找详解
2015/09/13 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
Python实现的knn算法示例
2018/06/14 Python
python dumps和loads区别详解
2020/02/04 Python
python如何把字符串类型list转换成list
2020/02/18 Python
python math模块的基本使用教程
2021/01/16 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
世界上最大的二手相机店:KEN
2017/05/17 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
企业宣传策划方案
2014/05/29 职场文书
团队拓展活动方案
2014/08/28 职场文书
复试通知单模板
2015/04/24 职场文书
情况说明书格式及范文
2019/06/24 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
德劲DE1105机评
2022/04/05 无线电
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python
Java线程的6种状态与生命周期
2022/05/11 Java/Android