获取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 相关文章推荐
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
Yii PHP Framework实用入门教程(详细介绍)
Jun 18 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 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 OPCode缓存 APC详细介绍
2010/10/12 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
python读取txt文件,去掉空格计算每行长度的方法
2018/12/20 Python
python实现年会抽奖程序
2019/01/22 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
室内设计实习自我鉴定
2013/09/25 职场文书
高一新生军训感言
2014/03/02 职场文书
初中生期末评语大全
2014/04/24 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis