获取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 16 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
老生常谈PHP中的数据结构:DS扩展
Jul 17 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 PHP
PHP如何解决微信文章图片防盗链
Dec 09 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 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初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
jstree的简单实例
2016/12/01 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
在Python的Django框架中包装视图函数
2015/07/20 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Python3常用内置方法代码实例
2019/11/18 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
UNIX文件类型
2013/08/29 面试题
三年大学自我鉴定
2014/01/16 职场文书
董事长秘书职责
2014/01/31 职场文书
入学生会自荐书范文
2014/02/05 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
初中英语课后反思
2014/04/25 职场文书
党员作风建设整改方案
2014/10/27 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
我爱我班主题班会
2015/08/13 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
Redis如何实现分布式锁
2021/08/23 Redis