首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP Curl无法连接到自己服务器上的主机

PHP Curl无法连接到自己服务器上的主机
EN

Stack Overflow用户
提问于 2011-05-10 11:10:23
回答 4查看 11.9K关注 0票数 3

我有一个PHP脚本,它使用cURL访问也位于我的服务器上的文件(已安装的电子邮件营销程序)。我编写了一个快速脚本来测试我的cURL安装,当它指向我自己服务器上的一个文件时,它就失败了。剧本是:

代码语言:javascript
复制
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.mysite.com/test.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$contents = curl_exec($ch);

if($contents) {
    echo $contents;
} else {
    $err = curl_error($ch);
    echo $err;
}

curl_close($ch);

运行此代码时,它将返回一个错误:无法连接到主机

如果我将网址更改为http://www.google.com或任何其他站点,它就能正常工作。另外,当我试图在另一台服务器上通过cURL打开特定的页面时,它的工作原理是应该的。我从这些测试中得出的假设是,PHP已经安装并且(有点)工作,并且问题不在试图打开的页面中。

我认为这可能是端口问题,所以我尝试使用相同的结果指定端口(而不是连接到主机)。我尝试了curl_setopthttp://www.mysite.com:80/来指定一个我知道是打开的端口。

这让我相信,这个问题在我的apache安装中是有问题的,但我不是apache专家,我整天都在和Google碰头,但都没有用。有什么想法可以导致这样一个特定的cURL失败?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-10 11:17:07

尝试在web浏览器中打开http://www.mysite.com/test.php。如果它有效,那么问题在于cURL。如果没有,那么问题要么是您的网络,要么是apache配置。

您可以通过确保apache配置在系统上运行来检查它。然后从命令行尝试telnet <apache server ip> 80。连接之后,尝试执行以下操作:

代码语言:javascript
复制
GET /test.php HTTP/1.1
Host: www.mysite.com
<2 line breaks>

如果您收到apache的响应,那么它听起来就像是网络问题。确保mysite.com解析为您的apache服务器的IP地址,端口80流量可以到达您的服务器。这也可能是路由器试图向其自己的ip地址发出请求的回送路由问题(假设您的apache盒位于路由网络连接的后面,与您所在的连接相同)。

票数 0
EN

Stack Overflow用户

发布于 2015-11-11 21:12:37

遇到相同的问题,即我的域名在服务器上无法解决,导致CURL请求本身失败。

我的问题是,由于某些防火墙规则,我的web服务器无法自行解决问题(在web服务器前面有一个负载均衡器,它阻塞了来自服务器的流量)。

换句话说,在我的服务器上运行以下命令

curl -I http://www.mywebserver.com的结果是:

$ curl -I http://www.mywebserver.com curl: (7) couldn't connect to host

更新服务器上的/etc/host文件,将域名映射到本地ip地址,解决了这个问题,并且我的脚本中的fopencurl再次发挥了作用。

票数 3
EN

Stack Overflow用户

发布于 2011-05-10 11:13:43

你能平www.mysite.com吗?

检查您的/etc/主机..。可能是为www.mysite.com指定了错误的IP。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5949084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档