我查看了之前有关cURL和HTTP代码0的帖子,但他们没有帮助。
我可以使用以下www.bambooping.com
下面的脚本进入localhost
- 即test_curl.php
localhost
test_curl2.php
bambooping.com
号bambooping.com
。但是,如果我在bambooping.com
上运行它,我会得到HTTP代码0.(我知道在同一主机上调用它是愚蠢的 - 它只是为了隔离问题。)
未设置safe_mode
<?php
error_reporting(E_ALL); ini_set("display_errors", 1);
function curl_download($Url){
// is cURL installed yet?
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
// OK cool - then let's create a new cURL resource handle
$ch = curl_init();
// Now set some options (most are optional)
// Set URL to download
curl_setopt($ch, CURLOPT_URL, $Url);
// Set a referer
// curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
// make it blank - then it is ignored - otherwise, checked and error returned!
curl_setopt($ch, CURLOPT_REFERER, '');
// User agent
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
// Include header in result? (0 = yes, 1 = no)
curl_setopt($ch, CURLOPT_HEADER, 0);
// Should cURL return or print out the data? (true = return, false = print)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Timeout in seconds
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// Download the given URL, and return output
$output = curl_exec($ch);
print_r(curl_getinfo($ch));
// Close the cURL resource, and free system resources
curl_close($ch);
return $output;
}
$str = curl_download("http://www.bambooping.com/test_curl2.php");
echo $str;
?>
,并且编译了curl(即应该是因为我可以进入)。这很奇怪 - 调用主机正在阻止cURL。为什么用cURL调用会失败,但是用cURL调用同一个主机可以吗?
test_curl.php:
<?php
echo "I am here";
?>
test_curl2.php
Array
(
[url] => http://www.bambooping.com/test_curl2.php
[content_type] =>
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 4.3E-5
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => 0
[upload_content_length] => 0
[starttransfer_time] => 0
[redirect_time] => 0
)
curl_getinfo是:
{{1}}
想法?我刚刚出来...... 谢谢 -
答案 0 :(得分:1)
请检查卷曲错误
它说给你问题
<?php
if(curl_errno($ch)) echo 'Curl error: ' . curl_error($ch);
?>
答案 1 :(得分:0)
www.bambooping.com
的服务器可能位于阻止传出HTTP请求的防火墙后面。即使它是同一台服务器,该请求仍然需要彻底解决DNS。
您可以编辑服务器上的hosts文件以包含127.0.0.1 www.bampooing.com
。或者您可以将URL更改为http://127.0.0.1/test_curl2.php
,因为此localhost域可能未被防火墙阻止。