首页 > 建站教程 > CMS教程 > dedecms >  DEDECMS采集时读取网址失败的解决方法正文

DEDECMS采集时读取网址失败的解决方法

    今天再给客户用dedecms5.7的程序采集时老出现读取网址失败。情况如下:
 
    测试的列表网址:http://www.abc.com/list/7.html
 
    获得的文章网址(只显示前十条):
 
    读取网址:http://www.abc.com/list/7.html 时失败!
 
    后来问了客服,说是因为空间商禁用fsockopen和pfsockopen函数。如果您是用vps的话,可以自己修改php配置。如果是空间,则需要向空间商反映了。下面来谈谈php环境,如何禁用或启用fsockopen()函数。
 
    fsockopen()函数的作用是可以用来打开一个socket连接,另一个函数pfsockopen()也有相似的功能,只不过后者是一个“持续”(persistent)的fsockopen()函数,它在脚本运行完之后并不立即断开。
 
    fsockopen()函数存在着比较大的安全问题,比如曾经就被黑客用来进行PHPDDOS攻击,因此很多主机提供商禁用了这个函数。
 
    那么如何知道自己的主机提供商有没有禁用这个函数呢?
 
    我们可以在任意一个网站目录下新建一个.php文件,在其中输入如下代码:
<?php
    echo phpinfo();
?>

    保存之后再在浏览器中访问该页面,可看到页面中呈现的是当前PHP的配置信息,按Ctrl+F搜索allow_url_fopen或disable_functions,可以看到如下图所示:
 
    在allow_url_fopen那一栏中,如果值为On,并且disable_functions这个禁用函数列表中没有fsockopen函数时,则表明fsockopen()函数时可以使用的,否则fsockopen()函数可能就被禁用了。
 
    那如何才能启用或禁用这个函数呢?
 
    我们需要找到php.ini这个PHP配置文件,如果需要禁用,则需在其中进行如下修改:
 
        1.将allow_url_fopen=On修改成allow_url_fopen=Off
        2.在disable_functions=后添加fsockopen
 
    如果需要启用,则只需进行相反操作。