获取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
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
解析php中反射的应用
Jun 18 PHP
PHP错误提示的关闭方法详解
Jun 23 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
Jan 09 PHP
PHP内核学习教程之php opcode内核实现
Jan 27 PHP
如何使用php等比例缩放图片
Oct 12 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 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代码DOS造成用光网络带宽
2011/03/01 PHP
php数组一对一替换实现代码
2012/08/31 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
jquery 锁定弹出层实现代码
2010/02/23 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
python 快速排序代码
2009/11/23 Python
python获取本地计算机名字的方法
2015/04/29 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
python虚拟环境完美部署教程
2019/08/06 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
浅谈Python中的字符串
2020/06/10 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
中间件分为哪几类
2016/09/18 面试题
人力资源主管岗位职责
2014/01/29 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
Spring中的@Transactional的工作原理
2022/06/05 Java/Android