获取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开发文件系统实例讲解
Oct 09 PHP
php遍历目录viewDir函数
Dec 15 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
php Session无效分析资料整理
Nov 29 PHP
PHP 年月日的三级联动实例代码
May 24 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
php取出数组单个值的方法
Mar 12 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 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
php5.2时间相差8小时
2007/01/15 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
对Python中range()函数和list的比较
2018/04/19 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
入党积极分子评语
2014/05/04 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
百日安全生产活动总结
2014/07/05 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
golang定时器
2022/04/14 Golang