我有这个代码在我的网站上加载外部页面:
<?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 ......
提前致谢!
答案 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正在考虑的内容的详细信息^^(当“它不起作用时通常非常有用的调试信息”)