Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

PHP7.0上“趋势统计”报错,diconv函数问题

[复制链接]
wengongling 发表于 2017-2-4 21:16:04 | 显示全部楼层 |阅读模式
PHP7.0上打开“趋势统计”/misc.php?mod=stat&op=trend报错。


之前在PHP5.6上没有问题的,切换回去试了下也没问题,随即对/source/include/misc/misc_stat.php做debug发现问题出现在:

  1. $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就正常了

  1. $xml .= "<graph gid='$count' title='" . diconv(lang('spacecp', "do_stat_$key"), CHARSET, 'utf8', true) . "'>";
复制代码


怀疑是diconv内的iconv和mb_convert_encoding转换出现的问题,开始怀疑是xml的长度太长,然后就设置了下只获取一天的,长度很短也报错,所以不知道原因了,麻烦看下这个函数在php7上是什么问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
monkeye 发表于 2017-2-5 11:39:18 | 显示全部楼层
我这php7并无此问题
回复

使用道具 举报

 楼主| wengongling 发表于 2017-2-5 13:19:11 | 显示全部楼层
monkeye 发表于 2017-2-5 11:39
我这php7并无此问题

我本地有个测试环境也没问题,看来不是一个必现的问题,但出问题的机器确实5.6下没问题的,到7出问题,能有什么办法排查不?我现在只能临时把第四个参数改成true来解决。
回复

使用道具 举报

monkeye 发表于 2017-2-5 14:51:01 | 显示全部楼层
通用类库不敢随意修改,iconv和mb_convert_encoding转换失误应该是php自身问题
当然不排除一些php.ini配置影响导致
你可确定下你那是用了2个函数的哪个
回复

使用道具 举报

 楼主| wengongling 发表于 2017-2-5 19:12:12 | 显示全部楼层
monkeye 发表于 2017-2-5 14:51
通用类库不敢随意修改,iconv和mb_convert_encoding转换失误应该是php自身问题
当然不排除一些php.ini配置 ...

明白,我再排查下,感觉可能和编码有关系。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-27 21:54 , Processed in 0.017133 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表