帝国cms远程图片本地化是一个非常重要的功能,即使不用采集日常更新也经常用得着,我们有时候会发现这个功能不生效,常见有哪些不生效的原因呢
帝国cms远程图片本地化不生效原因
1、图片格式和大小设置问题
帝国默认的图片格式不包括png,但是我们现在qq截图等都是png图片格式,加进去即可,假如源站的图片格式帝国后台没有,那肯定保存不了了。
系统参数设置——文件设置——文件扩展名
同时设置可以上传图片大小。
2、服务器配置问题
需要在php.in中把allow_url_fopen设置为on
3、入库超时502问题
这个在图片数量特别多的时候可能出现,把php执行时间设置长一点,一般默认60s,改成几分钟即可
4、源站图片链接是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;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容