【问题标题】:CURL error "couldn't connect to host" on http server only仅在 http 服务器上出现 CURL 错误“无法连接到主机”
【发布时间】:2017-05-24 09:51:40
【问题描述】:

我调用CURL 代码来调用 URL(URL 发送电子邮件)。 当我从浏览器调用 URL 时,它可以工作,但是当我从 curl php 代码执行它时,它不起作用。

另外,完全相同的 curl 代码适用于我的 https SSL 生产服务器,但不适用于我的 http 开发服务器。

我在开发 http 服务器上遇到的错误是“无法连接到主机”。

这是代码:

$ch = curl_init();

$requestedUrl = http://XXX.XXX.XX.XX/myproject/index.php?entryPoint=viewReport&record=.....etc..

curl_setopt($ch, CURLOPT_URL, $requestedUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($ch);
if ($data === FALSE) {
    $GLOBALS['log']->fatal("error = " . print_r(curL_error($ch),true));
}

curl_close($ch);

我阅读了有关此问题的所有帖子。 我不知道我是否在代理后面,如果我在代理后面,我也不知道如何获取代理的 ip。

我已尝试添加curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

尝试添加:

curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_PROXY, "http://XXX.XXX.XX.XX"); //your proxy url
curl_setopt($ch, CURLOPT_PROXYPORT, "80"); // your proxy port number

尝试在防火墙中打开端口 1080(对任何 http 地址开放)。

我没有想法,所以请帮助我:)

【问题讨论】:

  • 你能从 cli 获取那个 url (index.php) 吗?
  • 谢谢 Denis,我从开发 linux 服务器控制台调用了 wget。我打电话给“wget XX.XX.XX.XX/myproject/index.php”(如果你的意思是我应该这样做)。它说“连接到 XX.XXX.XX.XX:80...失败:连接超时”。这是什么意思?
  • 这意味着你的服务器没有“看到”对方,这属于系统管理域,我不知道如何解决它。您的开发服务器应该可以访问互联网,但现在似乎没有...
  • 谢谢,但是防火墙对 http 请求是开放的。我可以从我的浏览器(它是一个 CRM 系统)浏览服务器中的项目,并且没有两台服务器只有一台。我从服务器调用 wget 到服务器 ip 本身(相同的 ip),它没有连接......

标签: php curl proxy


【解决方案1】:

几天前我也遇到了同样的问题。我所做的是在主机文件中添加 ip。让我解释一下:

  1. 你的开发服务器是 abc.com,你的 curl url 是 xyz.com/...
  2. 获取xyz.com的ip(我用ping xyz.com)
  3. 将此 IP 添加到 abc.com 服务器的主机文件中,例如 127.0.0.1 xyz.com

在我的情况下 abc.com 托管在专用服务器中,因此我可以进行此更改。我不知道如何在共享主机中做。可能是服务器人员或托管服务提供商可能会有所帮助。

【讨论】:

  • 谢谢,但我不明白...项目的代码在开发服务器本身中,在curl请求中,我调用与开发服务器本身相同的ip,那么如何curl调用不同的IP?如果它是同一台服务器(本地主机),为什么我需要对它进行 ping 操作?
【解决方案2】:

我只是将 url 的 IP 更改为“localhost”并且它起作用了 :) $requestedUrl = http://localhost/myproject/index.php?entryPoint=viewReport&record=.....etc..

【讨论】:

    猜你喜欢
    • 2016-05-08
    • 2011-08-22
    • 2021-08-04
    • 2014-01-25
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2014-10-29
    • 2020-02-01
    相关资源
    最近更新 更多