2012-09-10 2 views
0

예 URL의 내용을 얻을 수 있습니다 : 내가 HTTPS 페이지의 내용을 얻기 위해 컬을 사용하려고 https://www.tescogoldexchange.com/gold-calculator.aspx?carat=9&weight=1&ref=miniQuotePHP CURL는 HTTPS 페이지

.

문제는 문서를 가져올 수 없기 때문에 그 이유가 무엇인지 모릅니다.

function download_page($url){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"); 

    return curl_exec($ch); 
} 

답변

1

this guy이 실행되고있는 것과 같은 문제가 발생할 가능성이 큽니다. 그리고, 그는 그것을 고쳤던 것 같습니다. 문제는 아마도 SSL 인증서에 대한 협상과 cURL이 서버가 전송하는 인증서를 신뢰할 수 있다는 것을 알려주는 방법입니다.

0

제공하신 코드가 실제로 수정없이 정상적으로 작동합니다. RolfVandeKrol이 언급 한 것처럼 SSL 협상 문제가있을 수 있습니다. 그 생각과 고정 시도하려면 턴 오프 할 수있는 SSL 피어 검증을 함께 :

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

실제로 수정하기 전에, 무슨 일이 일어나고 있는지 확인하려면, 당신은 헤더를 모두 반환 볼 수 curl_getinfo($ch)를 사용할 수 있습니다. 이렇게하면 적절한 진단을 위해 스크립트가받는 응답의 종류를 알 수 있습니다.

또한 curl_close($ch);으로 curl 핸들을 제대로 닫으려면 함수를 수정해야 할 수 있습니다. 사용하는 대신 return curl_exec($ch);의, 시도 : 오류

... 
    $contents = curl_exec($ch); 
    curl_close($ch); 
    return $contents; 
} 
1

확인 :

$result = curl_exec($ch); 
if (!$result) { 
    die(curl_error($ch)); 
} 

당신은 '유효'의 CA의 내부 목록을 더 이상 배를 곱슬 곱슬하지 않는 사실에 의해 물리지있어 가장 가능성 따라서 원격 사이트의 인증서를 유효한 것으로 확인할 수 없습니다. 인증서 확인을 사용 중지하거나 직접 CA 목록을 설치해야합니다.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

p.s. 원격 리소스에 대한 작업이 성공했다고 가정하지 마십시오. 항상 오류 조건을 확인하고 사용 가능한 오류 메시지를 출력하십시오. 당신은 어둠 속에서 두들겨 맞기보다 조명을 켜서 많은 머리를 쥐어 짜낼 것입니다.

관련 문제