卷曲页面不起作用

时间:2016-03-10 17:00:27

标签: php curl

我有这个代码在我的网站上加载外部页面:

<?php 
function curl($url){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
            curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
  }


  $url = 'http://rooster.csvincentvangogh.nl:8081';
  $contents = curl($url);
  echo $contents;
?>

适用于大多数网站,但不适用于我需要的网站:http://rooster.csvincentvangogh.nl:8081。这是因为:8081?它需要在那里,否则该网站不起作用......我怎么能解决这个问题?还有另一种方法,而不是卷曲吗?

我在http://portquiz.net上测试了它。诸如80和8080之类的端口可以工作,但是例如8888和8081没有。 http://rooster.csvincentvangogh.nl:8080也有效,但它有不同的目录,而不是我需要的页面。我真的需要这些页面:8081 ......

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试设置端口:

curl_setopt($ch, CURLOPT_PORT , 8081);

因此,您可以从网址中删除:8081 注意:确保已安装卷曲模块

答案 1 :(得分:0)

我GUESS它因为它检测到404错误并因此想要返回一个“错误”(bool(false)?)来警告你,所以它丢弃了身体而忽略了CURLOPT_RETURNTRANSFERS。无论如何,请使用它。

function curl($url,&$body){
            $ch = curl_init();
            $tmpfile=tmpfile();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch,CURLOPT_FILE,$tmpfile);
            curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
            $ret = curl_exec($ch);
            $body=file_get_contents ( stream_get_meta_data ($tmpfile) ['uri'] );
            curl_close($ch);
            fclose($tmpfile);
            return $ret;
  }

还考虑CURLOPT_STDERR和CURLOPT_VERBOSE以获取有关curl正在考虑的内容的详细信息^^(当“它不起作用时通常非常有用的调试信息”)