file_get_contents 获取远程网页(即本站)时第一次可以取的页面内容,以后就取不到了,但取别人网站的可以取的(http://www.163.com)后来回收一下  应用程序池 又可以取的一次后又不行了
请问这是什么原因,是iis还是php 的哪个地方没有配置好?以前都没有遇到过

解决方案 »

  1.   


    两次请求的间隔如果非常短,http服务器会自动辨别第2次请求为恶意访问,这样可以防止DOS、大流量访问攻击。
    lz看看是否为此原因。
      

  2.   

    楼主
    print_r($http_response_header)
    试试看,看看返回的服务器返回的header里面有没什么信息
      

  3.   

    function exists_remote_file($url_file)
    {
    //检测输入
    $url_file = trim($url_file);
    if (empty($url_file)) { return false; }
    $url_arr = parse_url($url_file);
    if (!is_array($url_arr) || empty($url_arr)){ return false; } //获取请求数据
    if(!isset($url_arr['host'])) return false;
    $host = $url_arr['host'];
    $path = $url_arr['path'];
    if(isset($url_arr['query'])) $path.="?".$url_arr['query'];
    $port = isset($url_arr['port']) ? $url_arr['port'] : "80";
    //连接服务器
    $fp = fsockopen($host, $port, $err_no, $err_str, 30);
    if (!$fp){ return false; }
    //构造请求协议
    $request_str = "GET ".$path." HTTP/1.1\r\n";
    $request_str .= "Host: ".$host."\r\n";
    $request_str .= "Connection: Close\r\n\r\n"; //发送请求
    fwrite($fp, $request_str);
    $first_header = fgets($fp, 102400);
    fclose($fp);                //测试输出$first_header 的值
                       print_r($first_header); //判断文件是否存在
    if (trim($first_header) == ""){ return false; }
    if (!preg_match("/200/", $first_header)){
    return false;
    }
    return true;
    }用以上检测:当回收应用池以后显示的是:HTTP/1.1 200 OK 
    后来就显示:HTTP/1.1 302 Moved Temporarily 第一次说明连接上,第二次应该是连不上吧,但是回收一下又可以了?哎,以前都没遇到过这种问题,最近帮朋友搞了个网站,用他自己的服务器,不知道是服务器哪儿没配好?
      

  4.   

    不好意思,搞定了打开php.ini 文件 开启 include_path 配置  就行了这好像与浏览模式有关:直接访问与file_get_contents不是同一种方式谢谢这么多朋友关心