DEDECMS 设置采集规则时,保存测试时,提示读取测试网址失败,不能下载远程图片和资源,不能提取缩略图,是因为服务器上禁用了fsockopen() 与pfsockopen() 函数造成的,在用fsockopen()或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);
确定服务器是否禁用了fsockopen() 与pfsockopen() 函数,可以使用PHP探针查看服务器的信息,信息中会明确显示是否禁用了这两个函数的。
lnmp默认是禁止fsockopen() 与pfsockopen() 函数的.打开的方法:
/usr/local/php/etc/php.ini
下载回本地,检索“disable_functions”,LNMP0.9的默认php.ini文件在第210行,在它后面删除掉“pfsockopen”、“fsockopen”,重启LNMP就解决了,通讯正常,邮件也能正常发送。
后来在LNMP官网上的FAQ中看到了LNMP0.9 部分函数被禁用的说明,“禁用了部分存在危险的PHP函数”,解决办法是:
修改/usr/local/php/etc/php.ini 查找disable_functions 将后面要使用的函数删掉,保存,然后执行:/etc/init.d/php-fpm restart 重启后即可。