获取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缩略图生成程式(需要GD库支持)
Mar 06 PHP
thinkphp3.0 模板中函数的使用
Nov 13 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
Laravel下生成验证码的类
Nov 15 PHP
php定期拉取数据对比方法实例
Sep 22 PHP
在laravel5.2中实现点击用户头像更改头像的方法
Oct 14 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 PHP
php在linux环境中如何使用redis详解
Dec 15 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/18 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
js仿360开机效果
2019/12/26 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
优化Python代码使其加快作用域内的查找
2015/03/30 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
详解python中的线程
2018/02/10 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
pybind11在Windows下的使用教程
2019/07/04 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
python实现KNN分类算法
2019/10/16 Python
Python中实现输入一个整数的案例
2020/05/03 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
2014年两会学习心得范例
2014/03/17 职场文书
环保志愿者活动方案
2014/08/14 职场文书
防灾减灾活动总结
2014/08/30 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
员工辞职信范文
2015/03/02 职场文书
大学团日活动总结书
2015/05/11 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript