打开远程文件的条件有:
1、php.ini中
allow_url_fopen=On
2、php程序与目标地址间没有代理服务器

解决方案 »

  1.   

    哦,原来如此,我的电脑是局域网,用自己的帐号密码通过代理服务器上网的,那我要实现这个功能该怎么办?是不是要用socket?
      

  2.   

    是的,可以用socket和curl
    用socket需先用socket连接代理服务器,然后将目标路径通过代理发出
    用curl简单一些,只要设置代理就可以了
      

  3.   

    用file_get_contents不是也可以得到远程文件吗?
      

  4.   

    既然fopen和file函数都不行,那file_get_contents也应该一样了吧,都是要经过代理服务器.所以,还是看看socket和curl吧,查手册去了,搞不定再回来:)
      

  5.   

    继续讨论:)
    手册上说curl要安装才能用,那我要是放在虚拟空间上,它有没有这个支持呢?
    还有要学socket在哪里有资料啊?一开始,有点晕呢!
      

  6.   

    是您的php版本太低了,要php4.3以上才支持fopen远程文件
      

  7.   

    $service_port = getservbyname("www", "tcp");
    $address = "www.baidu.com"; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    $result = socket_connect($socket, $address, $service_port); $in = "GET / HTTP/1.1\r\n";
    $in .= "Host: www.baidu.com \r\n";
    $in .= "Connection: close\r\n\r\n";
    socket_write($socket, $in, strlen($in)); $str = "";
    while ($out = socket_read($socket, 4096))
    {
    $str .= $out;
    } socket_close($socket);
      

  8.   

    <?php
    /*
    作者:[email protected]
    网址:http://www.miw.cn/blog
    用途:一段简单明了的抓取网页内容的代码
    环境:w2k3+apache 2.x+php 5.x
    网络:本地局域网+宽带路由上网
    */
    $theURL = "http://blog.freshwired.net/core.php?show=blogview&blogid=160380&bcid=50311";
    $theFlag1 = "<!--Start of Content-- //-->";
    $theFlag2 = "<!-- End of Content //-->";
    echo GetContents($theURL,$theFlag1,$theFlag2);function GetContents($url,$StartFlag,$FinFlag){
    $contents = file_get_contents($url);
    eregi("$StartFlag.(.*).$FinFlag",$contents,$regs);
    return $regs[1];
    }
    ?>