获取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扩展编写点滴 技巧收集
Mar 09 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
php5.3 注意事项说明
Jul 01 PHP
php接口与接口引用的深入解析
Aug 09 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
php中return的用法实例分析
Feb 28 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
php实现文件上传及头像预览功能
Jan 15 PHP
PHP如何读取由JavaScript设置的Cookie
Mar 22 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 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
中东人咖啡哲学
2021/03/03 咖啡文化
基于mysql的论坛(4)
2006/10/09 PHP
目录,文件操作详谈―PHP
2006/11/25 PHP
php下使用以下代码连接并测试
2008/04/09 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
常用的javascript function代码
2008/05/23 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
PHP守护进程实例
2015/03/06 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
python获取服务器响应cookie的实例
2018/12/28 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
Python中url标签使用知识点总结
2020/01/16 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
中学生评语大全
2014/04/18 职场文书
保安2014年终工作总结
2014/12/06 职场文书
仙境之桥观后感
2015/06/16 职场文书
简短清晨问候语
2015/11/10 职场文书