【问题标题】:Rackspace Cloud Files - [curl] 6: Couldn't resolve host 'identity.api.rackspacecloud.com' Exception thrownRackspace 云文件 - [curl] 6:无法解析主机 'identity.api.rackspacecloud.com' 引发异常
【发布时间】:2014-11-18 07:06:22
【问题描述】:

以下代码在 localhost 中运行良好,在服务器中它会引发错误 [curl] 6: Couldn't resolve host 'identity.api.rackspacecloud.com'

$client = new Rackspace(Rackspace::UK_IDENTITY_ENDPOINT, array(
                    'username' => $username,
                    'apiKey' => $apiKey,
                    'ssl.certificate_authority' => false,
                    'curl.options' => array('debug' => true, CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4)
            ));

我在服务器 identity.api.rackspacecloud.com 中执行 ping 操作,它工作正常。我按照这个文档尝试使用 curl 进行身份验证: http://docs.rackspace.com/servers/api/v2/cs-devguide/content/curl_authentication.html

这是我发送的请求:

curl -s https://lon.identity.api.rackspacecloud.com/v2.0/tokens -X 'POST' -d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"xxxx", "apiKey":"yyyyyyyy"}}}' -H "Content-Type: application/json" | python -m json.tool 

它返回结果。

但是当我运行 php 代码时,它会抛出一个错误。请指导我找到问题。

编辑:

        $data_string = '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"xxxxxxx", "apiKey":"yyyyyyyyyy"}}}';//json_encode($data);
        $ch = curl_init('https://lon.identity.api.rackspacecloud.com/v2.0/tokens');
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
        );
        echo $result = curl_exec($ch);
        if(curl_errno($ch)){
            echo 'Curl error: ' . curl_error($ch);
        }

我在本地以及服务器和本地测试上面的代码,它工作正常但不是在现场。更改 CURLOPT_SSL_VERIFYPEER TRUE 和 FALSE。没有任何效果。

注意:

操作系统:CentOS

【问题讨论】:

  • 你试过基本的 curl.options 吗? curl 也有 verify_peer 属性。不确定它是否是 SSL 故障。也许尝试基本的 curl 调用来确定是 curl 的错还是 Rackspace's
  • @Gacek 我尝试了基本的 curl 调用...仍然会引发错误。
  • 我会在你的位置尝试获得不同的可能更“标准”的配置服务器,并尝试它是否有效。基本卷曲是否有效?尝试获取google.com?也许是服务器库的问题而不是您的应用程序?

标签: rackspace-cloudfiles


【解决方案1】:

添加谷歌DNS域名服务器,解决问题。

在server中,/etc/resolv.conf中定义的nameserver是

nameserver 83.138.151.80
nameserver 83.138.151.81

这是英国 Rackspace 推荐的名称服务器。

所以命令提示符中的 curl 有效,但在 php 中无效。所以我决定同时添加谷歌DNS。现在 /etc/resolv.conf 是这样的:

nameserver 83.138.151.80
nameserver 83.138.151.81
nameserver 8.8.8.8

一切正常...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多