如何解决cURL错误(7):无法连接到主机?

2022-08-30 08:28:09

我使用cUrl(php)以xml格式向Web服务发送项目代码。我在localhost中得到了正确的响应,但是当它服务器时,它会显示

cURL 错误 (7): 无法连接到主机

这是我的代码:

function xml_post($post_xml, $url)
{
    $user_agent = $_SERVER['HTTP_USER_AGENT'];

    $ch = curl_init();    // initialize curl handle
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);          
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 50); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_xml); 
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
//  curl_setopt($ch, CURLOPT_PORT, $port);          

    $data = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    if ($curl_errno > 0) {
            echo "cURL Error ($curl_errno): $curl_error\n";
    } else {
            echo "Data received\n";
    }
    curl_close($ch);

    echo $data;
}

我将项目代码发送给计数,并从中获取详细信息。我尝试使用php 4 +和php5 +两个版本,没有任何解决方案。


答案 1

卷曲错误代码 7(CURLE_COULDNT_CONNECT)

非常明确...它意味着Failed to connect() to host or proxy.

以下代码适用于任何系统:

$ch = curl_init("http://google.com");    // initialize curl handle
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
print($data);

如果你看不到谷歌页面,那么.. 或者你有一些或问题。your URL is wrongfirewallrestriction


答案 2

“CURL错误7无法连接到权限被拒绝”错误,当由于任何原因curl请求被某些防火墙或类似的东西阻止时。

当 curl 请求不使用标准端口时,您将遇到此问题。

例如,如果您确实卷曲到端口1234上的某个URL,您将遇到此问题,其中带有端口80的URL将很容易地为您提供结果。

最常见的是,在 CentOS 和任何其他带有 “SElinux” 的操作系统上都可以看到此错误。

您需要禁用或将“SElinux”更改为允许

看看这个

http://www.akashif.co.uk/php/curl-error-7-failed-to-connect-to-permission-denied

希望这有帮助


推荐