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

我使用cUrl(php)将项目代码以xml格式发送到Web服务。 我在本地主机得到正确的响应,但什么时候做服务器显示

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; } 

我将物品代码发送到Tally,并从中获取详细信息。 我尝试使用版本的PHP 4 +和PHP5 +,没有任何解决scheme。

CURL错误代码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 wrong或者你有一些firewallrestriction问题。

由于某些防火墙或类似的事情阻止了curl请求,导致“CURL ERROR 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

希望这可以帮助

你能够通过浏览器或PHP脚本点击该url吗? 显示的错误是您无法连接。 所以首先确认该URL是可访问的。

在PHP中,如果你的networking在代理之下。 您应该设置代理URL和端口

 curl_setopt($ch, CURLOPT_PROXY, "http://url.com"); //your proxy url curl_setopt($ch, CURLOPT_PROXYPORT, "80"); // your proxy port number 

这是解决我的问题

在我的情况下,这个问题是由主机提供商,我使用阻止http数据包寻址到他们的IP块内发起的IP块。 取消frickin,可信!

检查端口80和443是否被阻塞。 或input – IP graph.facebook.com并将其input到etc / hosts文件中

在远程设备上未configuration的情况下,对https执行curl调用也可能导致此问题。 在这种情况下调用http可以解决这个问题,至less直到在远程configurationssl。

在我的情况下,我有像cURL Error (7): ... Operation Timed Out 。 我正在使用我工作的公司的networking连接。 我需要创build一些环境variables。 下一个为我工作:

在Linuxterminal中:

 $ export https_proxy=yourProxy:80 $ export http_proxy=yourProxy:80 

在Windows中,我创build(相同)的Windows方式的环境variables。

我希望它有帮助!

问候!

你也可以得到这个,如果你想在同一时间点击多个HTTP请求相同的URL。许多curl请求将无法连接,因此返回错误