详情页

帝国CMS7.5发布文章时,勾选了编辑器下方的“远程保存图片”,https图片下载无效果

时间:2023年10月07日

编辑:佚名

帝国CMS7.5源站图片链接是https,无法远程下载图片
一个用帝国CMS7.5搭建的新网站,发布文章时,勾选了编辑器下方的“远程保存图片”,无效果,没有正常远程下载服务器到服务器中,编辑器中的图片绝对地址也没有变成相应的相对地址。
经过检查,原来是当前站点是http,而要远程下载的图片地址是https,如果改成http协议的图片地址,就能正常远程下载。在帝国cms官方论坛查询了下,有网友
提出:远程保存图片不支持https,需要php开启ssl模块。
打开文件 /e/class/connect.php :
第一步:在 connect.php 文件最上面, <?php 下面添加以下函数:
function getHTTPS($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
第二步:搜索function ReadFiletext,找到以下函数:
function ReadFiletext($filepath){
    $filepath=trim($filepath);
    $htmlfp=@fopen($filepath,"r");
    //远程
    if(strstr($filepath,"://"))
    {
        while($data=@fread($htmlfp,500000))
        {
            $string.=$data;
        }
    }
    //本地
    else
    {
        $string=@fread($htmlfp,@filesize($filepath));
    }
    @fclose($htmlfp);
    return $string;
}
换成以下代码:

function ReadFiletext($filepath){
    $filepath=trim($filepath);
    $htmlfp=@fopen($filepath,"r");
    //远程
    if(strstr($filepath,"https://")){
        return getHTTPS($filepath);
    }

    if(strstr($filepath,"://"))
    {
        while($data=@fread($htmlfp,500000))
        {
            $string.=$data;
        }
    }
    //本地
    else
    {
        $string=@fread($htmlfp,@filesize($filepath));
    }
    @fclose($htmlfp);
    return $string;
}
相关文章
猜你需要