获取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 24 PHP
php入门教程 精简版
Dec 13 PHP
php 高性能书写
Dec 11 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 07 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 在文件指定行插入数据的代码
2010/05/08 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
php实现图片缩放功能类
2013/12/18 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
原生js封装添加class,删除class的实例
2017/11/06 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
python实现求特征选择的信息增益
2018/12/18 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
创业计划书怎样才能打动风投
2014/01/01 职场文书
三方合作协议书范本
2014/04/18 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
老人与海读书笔记
2015/06/26 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
python接口测试返回数据为字典取值方式
2022/02/12 Python