获取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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
PHP 5.0 Pear安装方法
Dec 06 PHP
使用apache模块rewrite_module (转)
Feb 14 PHP
php中使用接口实现工厂设计模式的代码
Jun 17 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
php实现smarty模板无限极分类的方法
Dec 07 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 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验证码实现代码
2014/05/10 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
javascript解析json实例详解
2014/11/05 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
python代码制作configure文件示例
2014/07/28 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
python简单分割文件的方法
2015/07/30 Python
Python语法快速入门指南
2015/10/12 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
市场营销求职信范文
2014/02/21 职场文书
离婚协议书范本
2015/01/26 职场文书
2015年团支书工作总结
2015/04/03 职场文书
义诊活动通知
2015/04/24 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python