【问题标题】:PHP curl working on XAMPP, but not on ServerPHP curl 在 XAMPP 上工作,但不在服务器上
【发布时间】:2017-01-09 18:08:06
【问题描述】:

我将我的应用程序从我的开发环境 XAMPP 转移到我们旧的 Ubuntu Web 服务器 (Ubuntu 12.04.5 LTS)。在服务器上,安装了 PHP 5.3。 我启用了 curl,它正在工作。

当我尝试运行我的代码时,出现“找不到主机”错误。我已经尝试在this article 的帮助下调试 curl,但我无法弄清楚问题所在。

我尝试了以下代码:

function getTest($parameter, $username, $password){
    $response = file_get_contents_curl('[rest url with parameter]', $username, $password);
    print_r($response);
}

function file_get_contents_curl($url, $username, $password) {
    ob_start();
    $out =fopen('php://output', 'w');
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    curl_setopt($curl, CURLOPT_STDERR, $out);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($curl, CURLOPT_USERPWD, $username . ":" . $password);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
    $data = curl_exec($curl);
    fclose($out);
    $debug=ob_get_clean();
    print_r($debug);
    curl_close($curl);

上面的代码包含文章中的调试代码。以下是输出(除了包含错误“找不到主机”的 $response 输出):

GET [rest url] 
HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: [host]
Accept: */*
Proxy-Connection: Keep-Alive

< HTTP/1.1 502 Host not found
< Date: Mon, 09 Jan 2017 17:49:42 GMT
< Cache-Control: no-cache
< Pragma: no-cache
< Content-Type: text/html; charset="UTF-8"
< Content-Length: 2556
< Accept-Ranges: none
* HTTP/1.1 proxy connection set close!
< Proxy-Connection: close
< Connection: close
<
* Closing connection #0

有没有人知道,那里可能有什么问题?身份验证有问题吗?如果我尝试在命令行中访问它,该 url 也不起作用,但该代码在我的 XAMPP 中有效,并且该 url 在浏览器中有效。

我真的很感激任何帮助!!! 提前谢谢!

【问题讨论】:

  • [rest url] 是否真的设置为 URL?
  • 是的,这是我的网址 (http://.....)

标签: php apache authentication curl server


【解决方案1】:

最后我发现,如果我使用纯 IP 而不是域名,它可以工作。我不熟悉网络的东西,但似乎 DNS 有问题。

但是通过在 URL 中使用 IP,一切正常。

【讨论】:

  • 从问题中我不确定这是否是您自己的域/IP 您正在调用。无论哪种方式,请注意 IP 将来可能会发生变化,如果主机移动到不同的服务器,引入一些具有多个服务器的负载平衡机制,或者由于服务器的更改,该站点可能在服务器的默认目录中不可用配置。找出 DNS 问题,而不是仅仅规避它,可能会在将来为您省去一些维护上的麻烦。
  • 是的,这是真的!由于我目前只开发一个原型,这对我来说已经足够了。但如果你能解释一下如何解决 DNS 问题,我会很高兴:-)
  • 说起来容易做起来难。首先,您需要弄清楚到底出了什么问题,以及哪里出了问题。但我认为这对于评论部分来说太过分了,而且我在网络方面也不是那么专家。也许您会在chat 中找到帮助?此外,也许将其标记为正确答案并不是最好的做法。
猜你喜欢
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
相关资源
最近更新 更多