2014-11-18 3 views
1
로컬 호스트에서 아래의 코드가 잘 작동

를 던져 서버에 오류 [curl] 6: Couldn't resolve host 'identity.api.rackspacecloud.com'랙 스페이스 클라우드 파일 - [컬] 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에서 ping을 실행하면 정상적으로 작동합니다.

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 

그것은 결과를 반환 : http://docs.rackspace.com/servers/api/v2/cs-devguide/content/curl_authentication.html

이 난에서 보낸 요청이 : 그리고 컬을 사용하여 인증을 시도하기 위해이 문서를 따랐다.

하지만 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로 변경하십시오. 아무것도 작동하지 않습니다.

참고 :

OS : CentOS는

+0

당신이 기본 curl.options으로 시도 해 봤나 ... 잘 작동? 컬은 또한 verify_peer prpery를가집니다. 그것의 SSL 결함 tho 경우 확실하지 않습니다. 어쩌면 curl의 잘못인지 아니면''Rackspace''의 – Grzegorz

+0

@ Gacek인지를 확인하기 위해 기본 컬 호출을 시도해보십시오. @Gacek 기본 컬 호출을 시도합니다 ... 여전히 에러를 던집니다. –

+0

나는 당신의 자리에서 다른 "표준"설정 서버를 다른 것으로 바꾸고 작동 시키려고 노력할 것이다. 기본 컬은 전혀 작동합니까? http://google.com을 가져 오는 것이 좋습니다. 어쩌면 당신의 앱과 관련없는 서버 라이브러리의 문제일까요? – Grzegorz

답변

1

구글의 DNS 네임 서버를 추가하여 문제를 해결합니다.

서버에서 /etc/resolv.conf 파일에 정의 된 네임 서버는 영국을 위해 랙 스페이스 (Rackspace)으로 네임 서버를 권장

nameserver 83.138.151.80 
nameserver 83.138.151.81 

입니다.

curl in 명령 프롬프트는 작동하지만 php에서는 작동하지 않습니다. 그래서 나는 그것과 함께 Google DNS를 추가하기로 결정했습니다. 지금과 같이 /etc/resolv.conf 파일 :

nameserver 83.138.151.80 
nameserver 83.138.151.81 
nameserver 8.8.8.8 

모든