织梦dedecms 无法下载远程图片 fsockopen函数被禁用的解决方法

在linux服务器上fsockopen()函数被无情的禁用了(这其实是出于安全考虑,可以理解),下载远程图片的功能就没有办法使用了。找了一些资料之后,找到了解决方法,就是用stream_socket_client()函数替换掉fsockopen()函数。具体的方法如下:

打开/include/中的dedehttpdown.class.php文件,找到如下代码:

$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/中的dedecollection.func.php文件,找到如下代码:

$m_fp = fsockopen($ghost, 80, $errno, $errstr,10);

改成如下:

$m_fp = stream_socket_client("".$ghost.":80", $errno, $errstr, 10);

查找:

$m_fp = fsockopen($ghost, 80, $errno, $errstr,10) or die($ghost.'<br />');

改为如下代码:

$m_fp = stream_socket_client("".$ghost.":80", $errno, $errstr, 10) or die($ghost.'<br />');

即可。

原文地址:https://www.cnblogs.com/cnteam/p/4130548.html