V变量—建站日记 - image
type: channel
link: https://888720.xyz/tag/image/
items: 帝国cms报错、远程保存图片无效的原因与解决方案

帝国cms报错、远程保存图片无效的原因与解决方案
type: item
date: 2024-12-08T01:06:39+08:00
description: 帝国cms远程保存图片是一个非常重要的功能，但一些站长在使用中可能会发现这个功能突然无效了，这是什么原因，要如何处理呢？帝国cms远程保存图片无效的原因图片格式和大小设置问题如果帝国cms上传文件没有添加png上传模式，而图片又刚好是png，则上传就会出问题。解决方案也很简单，到系统设置-系统参数设置-文件设置-后台上传文件扩展名里添加png即可，注意分隔符也要。图片是https的帝国目前暂不支持远程保存https图片，如果需要，则要进行以下调整。1.打开文件/e/class/connect.php2.1、在connect.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; }3.搜索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; }其他可能的原因服务器配置问题需要在php.in中把allow_url_fopen设置为on入库超时导致502错误一般情况下不会出现这个问题，如果出现了，可以尝试将php等待时间改长一点，而后重启php服务。被复制的源站不支持跨域、被引用如果被复制的源站不支持图片被站外引用，也可能导致图片无法被存储到本地。如果排查确认后是这个原因，则只能更换源站进行信息复制。通过以上原因的排查与处理，基本可以解决远程保存图片失败的问题。