PHP7.0上打开“趋势统计”/misc.php?mod=stat&op=trend报错。
之前在PHP5.6上没有问题的,切换回去试了下也没问题,随即对/source/include/misc/misc_stat.php做debug发现问题出现在:
- $xml .= "<graph gid='$count' title='" . diconv(lang('spacecp', "do_stat_$key"), CHARSET, 'utf8') . "'>";
复制代码
经过查看是diconv函数出现问题,通过function_core.php查看diconv函数
function diconv($str, $in_charset, $out_charset = CHARSET, $ForceTable = FALSE) {
global $_G;
$in_charset = strtoupper($in_charset);
$out_charset = strtoupper($out_charset);
if(empty($str) || $in_charset == $out_charset) {
return $str;
}
$out = '';
if(!$ForceTable) {
if(function_exists('iconv')) {
$out = iconv($in_charset, $out_charset.'//IGNORE', $str);
} elseif(function_exists('mb_convert_encoding')) {
$out = mb_convert_encoding($str, $out_charset, $in_charset);
}
}
if($out == '') {
$chinese = new Chinese($in_charset, $out_charset, true);
$out = $chinese->Convert($str);
}
return $out;
}
经过修改,将misc_stat.php的第四个参数修改后ture就正常了
- $xml .= "<graph gid='$count' title='" . diconv(lang('spacecp', "do_stat_$key"), CHARSET, 'utf8', true) . "'>";
复制代码
怀疑是diconv内的iconv和mb_convert_encoding转换出现的问题,开始怀疑是xml的长度太长,然后就设置了下只获取一天的,长度很短也报错,所以不知道原因了,麻烦看下这个函数在php7上是什么问题。
|