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

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

$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,并且可以(某种程度上)正常工作,并且问题不在试图打开的页面中.

我认为这可能是端口问题,因此我尝试指定具有相同结果的端口(未连接到主机).我尝试了curl_setopt和http://www.mysite.com:80/来指定我知道要打开的端口.

这使我相信问题出在我的apache安装中,但是我不是apache专家,而且我整天都在与Google争执不下.任何想法可能导致这种特定的cURL失败吗?

解决方法:

尝试在网络浏览器中打开http://www.mysite.com/test.php.如果可行,则问题出在cURL.如果不是,则问题可能出在您的网络或apache配置上.

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

GET /test.php HTTP/1.1
Host: www.mysite.com
<2 line breaks>

如果您收到来自Apache的回复,则听起来像是网络问题.确保mysite.com解析为您的apache服务器的IP地址,并且端口80流量可以到达您的服务器.这也可能是路由器尝试向其自己的IP地址发出请求的环回路由问题(假设您的apache盒位于路由网络连接的后面,即您所在的连接).

上一篇:MySQL-在哪里放置Web服务器根目录?


下一篇:带有PDF和PHP的Apache2-“此文件不是以“%PDF-”开头