加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

获取PHP警告错误信息的解决方法

发布时间:2020-05-24 15:40:14 所属栏目:PHP 来源:互联网
导读:本篇文章是对获取PHP警告错误信息的方法进行了详细的分析介绍,需要的朋友参考下

代码如下所示:
<div class="codetitle"><a style="CURSOR: pointer" data="51426" class="copybut" id="copybut51426" onclick="doCopy('code51426')"> 代码如下:<div class="codebody" id="code51426">
<?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],$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;
}
?>

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读