在搭建新的服务器并使用DedeCMS系统时,可能会遇到远程图片无法本地化的问题。也就是说,远程服务器上的图片无法保存到本地。本文将详细分析这一问题的可能原因,并提供相应的解决方案,帮助您快速解决问题。

原因分析:

DedeCMS在处理远程图片本地化时,主要依赖于PHP中的fsockopen函数。因此,要确保空间的相应目录具有写入权限,并且PHP的allow_url_fopen选项需要设置为On。

首先,我们需要修改PHP的配置文件php.ini。具体操作如下:


allow_url_fopen = On
    
请注意,为了防止Web变种攻击,某些Linux虚拟主机可能会禁用allow_url_fopen功能,以避免恶意程序通过此功能运行。如果您发现此功能被禁用,请联系您的主机提供商以重新启用它。

如果上述方法未能解决问题,可以检查upload_tmp_dir是否已正确配置:


upload_tmp_dir = "C:/php/tmp"
    
如果此项未设置,请去掉upload_tmp_dir项前面的分号,并添加正确的路径。确保C:/php/tmp目录具有适当的读取权限即可解决上传问题。当然,如果您没有服务器权限,则可以通过修改程序来解决。

具体修改位置位于/include/dedehttpdown.class.php文件的第507行。原始代码如下:


$this->m_fp = @fsockopen($this->m_host, $this->m_port, $errno, $errstr,10);
    
将其替换为以下代码:


$this->m_fp = @stream_socket_client($this->m_host . ':' . $this->m_port, $errno, $errstr,10);
    
保存更改后,测试一下是否可以正常下载远程图片。如果服务器无法访问外部网络,也可能导致无法下载远程图片到本地,这种情况需要单独处理。

以上方法可以帮助您解决DedeCMS中远程图片无法本地化的问题。希望这些信息对您有所帮助!