2014-11-18 1 views
1

ниже код в локальном хосте работает отлично и сервер он выдает ошибку [curl] 6: Couldn't resolve host 'identity.api.rackspacecloud.com'Rackspace Cloud Files - [локон] 6: Не удалось разрешить хост «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, и он отлично работает. И я последовал за эту документацию, чтобы попытаться проверить подлинность с помощью завиток: 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-код, он выдает сообщение об ошибке .. Просьба помочь мне найти проблему.

Edit:

 $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 ИСТИНА и ЛОЖЬ. Ничего не работает.

Примечание:

ОС: CentOS

+0

Пытались ли вы с основным curl.options? curl также имеет проверочную проверку. Не уверен, что его ошибка SSL tho. Возможно, попробуйте выполнить основной вызов curl, чтобы определить, является ли это ошибкой curl или '' Rackspace'' – Grzegorz

+0

@ Gacek. Я пытаюсь выполнить основной вызов curl ... все же он выдает ошибку. –

+0

Я попытался бы на вашем месте получить другой, возможно, более «стандартный» сервер конфигурации и попробовать, если он будет работать. Работает ли основной скручивание вообще? попробуйте выбрать http://google.com? Может быть, проблема с серверными библиотеками не с вашим приложением? – Grzegorz

ответ

1

Добавление Google DNS сервера имен, решает эту проблему.

В сервере, сервер имен определяется в /etc/resolv.conf является

nameserver 83.138.151.80 
nameserver 83.138.151.81 

который рекомендуется сервер имен по Rackspace для Великобритании.

Таким образом, завиток в командной строке работает, но не работает в php. Поэтому я решил добавить DNS-сервер Google вместе с ним. Теперь /etc/resolv.conf так:

nameserver 83.138.151.80 
nameserver 83.138.151.81 
nameserver 8.8.8.8 

Все работает отлично ...