我在192.168.10.2的服务器上面调用文件tmp.php,里面有fopen打开外网的文件的代码。因为服务器我只开放了80端口,因此fopen就调用失败了,但我想192.168.10.3是不关闭的,如果我想着去调用这台电脑的tmp.php是否可行呢,于是我在tmp.php里面用<a href='http://192.168.10.3/tmp.php'>读取文件内容</a>,结果还是失败,难道是href调用的文件里的代码执行还是在10.2的地方吗?不是在10.3的服务器上面执行完了之后被调到10.2的?

解决方案 »

  1.   

    你的描述还不够清楚,请说明,第一种情况下tmp.php调用10.3上的什么文件,端口是什么?第二种情况,tmp.php是在10.2上还是在10.3上,tmp.php中调用的时什么文件,端口是什么?
      

  2.   

    其实是这样的,192.168.10.2上面有一个文件index.php,是主页,上面有一个链接【查看天气预报】,用标签<a href='tianqiyubao.php' />查看天气预报</a>,这个tianqiyubao.php和index.php在同一个服务器上,tianqiyubao.php里面有一段截取别人网页的代码,就是窃取外网的天气预报信息了,用了fopen函数。但是192.168。10.2这个服务器只开放了80端口,fopen调用失败了。但是192.168.10.3这个服务器没有端口限制的,于是我将<a href='tianqiyubao.php' />查看天气预报</a>,改成<a href='http://192.168.10.3/tianqiyubao.php' />查看天气预报</a>,结果还是无法打开。于是就有了上面的问题。
      

  3.   

    连接问题
    1、10.3的服务器本地测试可用?localhost/tingqiyubao.php行不
    2、确定一下10.3的ip可以访问
      

  4.   

    192.168.10.2只开放80端口是作为服务端的端口允许客户机连接进来,而你的tianqiyubao.php是作为客户端去取别人服务器的数据,和80端口没有关系。你要确认是不是取不到外网的天气预报信息,一般来说网站会要求你的http请求中允许cookie,所以用fopen的默认方式去取数据是不行的,你必须指定cookie文件,有得情况下还要尽量模拟浏览器发出的http请求,比如要包含user-agent等等,具体的你看看php手册吧。php的cURL库来做网页内容抓取会更简单一点。
      

  5.   

    回复3楼:
    10.3的ip可以访问的,在10.3的localhost/tingqiyubao.php也是可以访问的,而且10.3的电脑去访问10.2的tingqiyubao.php也是可以的,因为10.3电脑可以上网的,而其他电脑不能上网的