获取PHP警告错误信息的解决方法
获取PHP警告错误信息的解决方法
发布时间:2016-12-29 来源:查字典编辑
摘要:代码如下所示:复制代码代码如下:

代码如下所示:

复制代码 代码如下:

<?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";

//數據配置

//公共函數

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);//去除重復

$result = implode("','",$tempArr);

$result = "<?phpn$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"; //文件路徑

$fp = fsockopen($domain,80);

//构造post请求的头

if($fp){

$header = "POST ".$actionPath." HTTP/1.1rn";

$header .= "Host:".$domain."rn";

$header .= "Content-Type: application/x-www-form-urlencodedrn";

$header .= "Content-Length: ".$length."rn";

$header .= "Connection: Closernrn";

//添加post的字符串

$header .= $params."rn";

//发送post的数据

fputs($fp,$header);

while (!feof($fp)) {

$line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据

if ($inheader && ($line == "n" || $line == "rn")) {

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教程学习
编程开发子分类