我在本地win上使用该函数完全正常,但在虚拟机linux上就不能获取外网数据,纳闷了很久,希望大家给点帮助。
下面是php的部分info:
windows php v5.2.5 always_populate_raw_post_data=on
linux   php v5.1.6 always_populate_raw_post_data=on有人说file_get_contents()函数经常获取不到,要多试几次,我也试过了,还是不行。
同样地,用readfile、fget、curl等函数也是获取不到,任何外部网站都不行。
防火墙关闭的,21端口正常。

解决方案 »

  1.   

    可能是网络链接的问题,而不是PHP的问题。
      

  2.   

    能ping通外网,我在实际的服务器上也测试了,一样的结果。代码:
    $file='http://www.baidu.com';
    $content=file_get_contents($file);
    echo $content;fsockopen我还没试,呆会吧结果放出来。谢谢各位的帮忙。
      

  3.   

    在WINDOWS下行吗???可能是百度的访问限制问题。
      

  4.   

    在windows下完全正确,网址我试了很多,都一样。
      

  5.   

    可能是Linux的环境问题,具体是什么,也不是很清楚。
      

  6.   

    file_get_contents,readfile,fget 这些不行的话确认一下PHP配置里面allow_url_fopen是否打开。
    但是你说CURL也不行,如果CURL扩展没问题的话还是检查一下主机和网络吧。
      

  7.   

    使用 fsockopen 程序段,win正常,linux下:
    $file='www.baidu.com';
    $fp = fsockopen($file, 80, $errno, $errstr);
    if (!$fp) {
        echo "999";
        echo "$errstr ($errno)<br />\n";
    } else {
        echo "hello";
    }
    输出结果:999(0)
      

  8.   

    allow_url_fopen,在win和linux里都是On感谢各位,希望大家再帮我想想办法。这问题快困扰我一个星期了。