2013-07-31 166 views
1

我已经解决了过去,但我绝对不记得如何。cURL:“无法连接到主机”

所以,我试图使用代理将网页提取到我的服务器。

下面是代码:

function curlFile($url,$proxy_ip,$proxy_port,$loginpassw) 
{ 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port); 
    curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP'); 
    curl_setopt($ch, CURLOPT_PROXY, $proxy_ip); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_VERBOSE, false); 
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw); 
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0); 


    $data = curl_exec($ch); 

    if(curl_errno($ch)){ 
      echo 'Curl error: ' . curl_error($ch); 
    } 

    print_r(curl_getinfo($ch)); 
    print_r(curl_error($ch)); 

    print_r($data); 

    curl_close($ch); 

    return $data; 
} 

所有它目前是输出:

Curl error: couldn't connect to hostArray ([url] => http://www.drkameleon.com [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.007872 [namelookup_time] => 0.007537 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0) couldn't connect to host

因此,任何想法?可能会出现什么问题?

回答

2

您的Web服务器无法连接到代理

  • 本地安全设置上的Web服务器 - 你没有说什么操作系统,这是对
  • 路由问题上运行Web服务器
  • 防火墙策略上代理

该代理需要验证? (你应该得到代理的4xx响应 - 如果你有CLI adccess,试着从命令行运行curl)。

代理在查找时得​​到了一个N​​XDomain,或者没有得到您期望的IP地址。

1

在在线PHP平台上执行相同的脚本并查看结果。可能有几个问题

  1. SSL验证问题。如果您向HTTPS网站发出请求,并且您的curl库未配置为信任证书,则会出现问题。您可以下载其他网站的CA证书并将卷发库指向该方向。

  2. 如果您在大学/办公室网络中,可能是防火墙问题。

  3. 错误的端口配置。

在线运行相同的脚本,看看你得到了什么结果[ssl_verify_result]。另请参阅它指向的HTTP代码。