试着给那函数加了时间,也无效,比如:    <?php
    $ctx = stream_context_create(array(
       'http' => array(
           'timeout' => 1 //设置一个超时时间,单位为秒
           )
       )
    );
    file_get_contents("http://example.com/", 0, $ctx);
    ?>

解决方案 »

  1.   

    也试着换成curl,依旧无效,如: $ch = curl_init();
    $timeout = 5;
    curl_setopt ($ch, CURLOPT_URL, 'http://localhost/index.php');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $con = curl_exec($ch);
    curl_close($ch);注:url是外网的完全没问题,只要是系统服务器和url所在服务器是同一个,就出不来,崩溃中
      

  2.   

    修改hosts 弄个域名解析到本地
    使用域名方式访问就可以解决了吧
    或者直接ip地址试看看
      

  3.   

    检查一下php.ini里,是不是 allow_url_fopen = 1?
    另外尝试用include替换file_get_contents,获取localhost的页面。
      

  4.   

    allow_url_fopen确定是开启的
    试过了用include,居然很卡很卡,然后在超时的那一刻达到了我想要的结果,但终究不是我想要的:按理说我要获取的内容应该在一秒钟以内就可以搞定。
    虽然目前已找到其他办法解决,但仍然表示疑惑,想不通为什么,难道是nginx+php5.3在Windows下的bug?
      

  5.   

    bug?没这个说法吧。检查你的代码。
    首先 http://localhost/index.php 里用简单的代码,比如 echo "hello world"; 是不是简单的代码也是这种情况吗?其次,用chrome或者firebug,看一下request header的情况,以及浏览器的cookies。或者不用浏览器测试,用windows自带的命令提示符测试。 运行 -> cmd 回车 -> php c:\www\index.php 回车。看看dos界面下是否返回结果?
      

  6.   

    兄台也是想获取本地某个url的内容?我其实是用该功能用来生成静态的,不知道兄台用来做什么,呵呵,有点好奇。
    但是我用其他办法解决了,就是用ajax请求本地的url,效果也是一样的。
      

  7.   

    function __curl_get($url){
    /*print_r(phpinfo());exit;*/
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $ret = curl_exec($ch);

    curl_close($ch);
    return $ret;
    }
      

  8.   

    抓取网页用这个函数就好了。要把curl_init()这个扩展添加了才能使用