帝国CMS远程图片本地化不支持HTTPS 怎么解决?
- 作者:zhy ——来源:原创 ——用过帝国CMS的人都知道,帝国CMS有一个非常好用的功能,就是远程图片本地化,可以让你发布文章时速度提升10倍。但是用过的人也应该都知道,如果图片的地址是HTTPS的话,就会导致图片本地化失败。那么如果遇到这个问题,我们要怎么才能解决帝国CMS远程图片本地化不支持HTTPS的问题呢?我在处理索比储能网时,是这样处理的。
通过搜索发现网上提供的方法如下,提醒第一种方法修改之后没有什么效果,可以直接跳过去,看下面的临时性解决的办法:
打开文件/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; }
将上面的部分PHP代码换成以下代码:
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; }
如果你真正的尝试过就会发现,其实到第二步的时候就已经不对了,因为这个function ReadFiletext的内容和你源码中的内容不一致。因此,你即便这么调整之后,仍然没有什么效果。随后我就发现一个常规的问题,正常来说如果https可以访问的话,那么使用http也可以正常访问到图片,一般网站都会做http跳转到https,那么是不是把地址修改成http之后,图片就可以正常下载了呢。尝试之后结果是可以,因此这里只需要搜索function ReadFiletext函数,找到:$filepath=trim($filepath);
//找到函数之后,在这个函数下面添加一个将https替换成http的代码,即可实现https图片下载的效果。当然这种修改方法不能保证每个网站都能有效果 $filepath=trim($filepath); $filepath=str_replace("https:","http:",$filepath);
好了,以上就是帝国CMS远程图片本地化不支持HTTPS 怎么解决的解决办法,真心希望可以帮助到你。如果你有更多问题可以加入下方的qq群,如果你对储能方面的新闻感兴趣的话,欢迎访问索比储能网。
如果你还有其它疑问可以来本站搜索相关问题,这里会有你想要的答案:火车脚本网
你会喜欢下面的文章?

还有什么疑问可以提出来
- 全部评论(0)
还没有评论,快来抢沙发吧!