帝國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;
}