获取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 相关文章推荐
用Flash图形化数据(二)
Oct 09 PHP
php中将数组存到文件里的实现代码
Jan 19 PHP
解析thinkphp的左右值无限分类
Jun 20 PHP
PHP中is_dir()函数使用指南
May 08 PHP
php生成gif动画的方法
Nov 05 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
Mar 21 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
Jul 12 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 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
基于文本的访客签到簿
2006/10/09 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php数据库密码的找回的步骤
2011/01/12 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
JQuery for与each性能比较分析
2013/05/14 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
python对象与json相互转换的方法
2019/05/07 Python
python实现简单五子棋游戏
2019/06/18 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
司机职责范本
2014/03/08 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
趣味运动会加油词
2015/07/18 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
Golang gRPC HTTP协议转换示例
2022/06/16 Golang