当前位置:首页 > 行业动态 > 正文

为什么DedeCMS无法保存远程图片到本地服务器,该如何解决?

确保远程图片URL有效,检查文件权限和存储路径设置,更新PHP配置以允许远程下载。

Dedecms无法保存远程图片到本地服务器的问题可能由多种原因引起,以下是一些常见的解决方法:

1、设置错误导致

检查是否设置了正确的网站网址,在后台系统设置中,确保“远程图片本地化”选项已勾选。

检查上传图片目录中是否有allimg文件夹,特别是在更改了图片上传目录的情况下。

2、修改代码实现方法

如果服务器上禁用了fsockopen()函数,可以尝试使用stream_socket_client()函数代替,具体修改地方是/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)。

也可以进入系统程序,在include文件夹中找到pub_httpdown.php文件,将fsockopen替换为pfsockopen。

3、编辑php.ini

找到php.ini文件,确保allow_url_fopen选项设置为On。

检查disable_functions,确保fsockopen没有被禁用。

4、设置upload_tmp_dir

确保upload_tmp_dir项已设置并具有正确的路径,如果没有设置,将前面的分号去掉,并在后面添加好路径。

给相应的目录(如C:/php/tmp)users读取权限。

5、检查服务器网络

如果服务器不能上外网,也可能无法下载远程图片到本地。

相关问答FAQs

1、Q: 为什么修改了/include/dedehttpdown.class.php文件后仍然无法保存远程图片?

A: 请确保已经重启了服务器或重新加载了PHP配置,以便使更改生效,检查服务器的网络连接是否正常,以及是否有其他安全设置阻止了远程请求。

2、Q: 如何检查PHP的allow_url_fopen选项是否已启用?

A: 可以通过创建一个简单的PHP文件来检查,例如创建一个info.php文件,内容如下:

   <?php
   phpinfo();
   ?>

然后在浏览器中访问该文件,搜索“allow_url_fopen”,查看其状态是否为On,如果未启用,需要编辑php.ini文件并重启服务器。

在进行任何修改之前,建议备份相关文件和数据库,以防万一出现问题可以恢复,确保你有足够的权限进行这些操作。

解决方法 描述
1. 检查PHP设置 确保PHP的upload_max_filesize和post_max_size设置足够大,以便可以上传图片。
2. 修改DedeCMS配置文件 在DedeCMS的配置文件中,检查include/config/config_base.php文件中的$cfg_remote_site和$cfg_remote_host等参数是否设置正确。
3. 设置正确的远程服务器权限 确保远程服务器上的图片目录具有写入权限,以便DedeCMS可以保存图片到该目录。
4. 修改图片保存路径 在DedeCMS的配置文件中,修改$cfg_default.save_dir参数,指定本地服务器上的图片保存路径。
5. 使用绝对路径 在上传图片时,确保使用绝对路径,而不是相对路径,以便正确保存到本地服务器。
6. 检查图片格式 确保上传的图片格式与服务器支持的格式相匹配。
7. 使用HTTP代理 如果服务器设置了HTTP代理,需要配置DedeCMS以使用该代理。
8. 检查服务器防火墙设置 确保服务器防火墙没有阻止DedeCMS访问远程服务器或保存图片到本地服务器。
9. 检查DedeCMS版本 更新到最新版本的DedeCMS,以解决可能存在的bug或兼容性问题。
10. 联系技术支持 如果以上方法都不能解决问题,请联系DedeCMS的技术支持寻求帮助。
0