获取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巧获服务器端信息
Dec 06 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 PHP
php的数组与字符串的转换函数整理汇总
Jul 18 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
php删除左端与右端空格的方法
Nov 29 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
WAF的正确bypass
Jan 05 PHP
PHP输出多个元素的排列或组合的方法
Mar 14 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
php实现微信原生支付(扫码支付)功能
May 30 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php 分页原理详解
2009/08/21 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
YII框架常用技巧总结
2019/04/27 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
深入理解Javascript里的依赖注入
2014/03/19 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Python编程中的反模式实例分析
2014/12/08 Python
python实现教务管理系统
2018/03/12 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
python脚本开机自启的实现方法
2019/06/28 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
市场部规章制度
2014/01/24 职场文书
大学生创业策划书
2014/02/02 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
行政文员岗位职责
2015/02/04 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
python如何做代码性能分析
2021/04/26 Python
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记