2011-04-24 7 views
7

PHP curl이 ssl로 컴파일되었고 ssl을 지원하는지 어떻게 확인할 수 있습니까? 내 말은 , 간단한 검사 컬 될 것이라고 사용할 수 있는지 확인합니다 :curl이 ssl을 지원하는지 확인하는 방법은 무엇입니까?

경우 (extension_loaded ('컬'))

하지만 어떻게 컬 또한 SSL 지원이 있는지 확인합니까? 이 검사가 필요한 이유는 ssl 지원이 oauth2 기반 API를 사용해야하기 때문에 클라이언트의 PHP가 oauth2를 실제로 사용하기 전에 oauth2를 사용할 수 있는지 신속하게 확인할 수있는 방법이 필요합니다.

+0

당신은 단지'HTTPS 말에 대해 테스트 할 수 : 신뢰할 수있는 유일한 방법은 CURL_VERSION_SSL 비트 마스크 검사입니다 . (단서가 실제로 작동하는 경우) – Ben

+0

난 어떤 프로그래밍 솔루션을 비슷한 extension_loaded() 또는 어쩌면 일부 상수를 사용할 수 있는지 테스트 할 찾고있다. – Dmitri

답변

10

당신이 기능의 비트 마스크를 $ 버전 [ '기능']에서

$version = curl_version(); 
$ssl_supported= ($version['features'] & CURL_VERSION_SSL); 

http://www.php.net/manual/en/function.curl-version.php를 참조하십시오. 이 비트 마스크와 적절한 상수 사이의 and 연산을 통해 feture가 활성화되어 있는지 확인할 수 있습니다.

가능한 상수는 다음과 같습니다

CURL_VERSION_IPV6 (정수)

CURL_VERSION_KERBEROS4 (정수)

에게 이

CURL_VERSION_SSL (정수)

CURL_VERSION_LIBZ (정수)

1

stream_get_wrappers()의 출력을 확인하십시오. https 네가 가기 좋은 목록에있다.

4

AFAIK 컬이 없습니다 SSL이 활성화 또는 비활성화되었는지 확인하는 방법, 테스트 및 포착은 확실히 알려줍니다.

작동하는지 확인하기 위해 테스트 해 볼 수 있습니다. (나는에 테스트 SSL없이 서버가없는 ..) 당신이 PHP 파일에이 코드를 넣으면

<?php 
$v = curl_version(); 
print $v['ssl_version']; // I get: OpenSSL/0.9.8 - I presume you won't if it is not enabled 
?> 
+0

Upvoted. 이것은 수용된 대답보다 간단합니다. – GetFree

1

, 당신은 브라우저에서 PHP에 대한 모든 세부 사항을 볼 수있을 것이다 :

<? php 

phpinfo(); 

?> 
0

openssl이로드 된 경우 cURL에서 사용할 수 있습니다.

function getScheme() 
{ 
    if (extension_loaded('openssl')) { 
     return 'https'; 
    } 

    return 'http'; 
} 
1

나는 컬이 http://curl.haxx.se/docs/faq.html#Does_curl_work_build_with_other 가 그와 함께 할 아무것도하지 않는 (OpenSSL이 아닌 다른 SSL 라이브러리를 사용할 수 있습니다 여기에 말한대로 curl_version()['ssl_version'], (예를 들어 if (stripos(curl_version()['ssl_version'], "openssl") !== false) {) 갈 좋은 생각인지 확실하지 않다 분리 된 openssl 확장자, curl은 자체 openssl 라이브러리를 가지고 있습니다.) 여기에 설명 된대로 http://curl.haxx.se/libcurl/c/curl_version_info.htmlcurl_version()['ssl_version'] 대신 CURL_VERSION_SSL 비트 마스크 검사를 사용하는 것이 좋습니다.

[CURL_VERSION_IPV6] => 1 
[CURL_VERSION_KERBEROS4] => 2 
[CURL_VERSION_SSL] => 4 
[CURL_VERSION_LIBZ] => 8 

내가 php.ini 파일에서 "OpenSSL을"확장을 비활성화하여 Windows에서이 테스트 컬는 아무 상관이 발견되지 않은 : 공식 컬을 웹 사이트에 언급 된 상수의 모든 PHP에서 사용할 수 있지만이 네 상수가 있습니다 그 분리 된 openssl 확장자와 함께 할 수는 있지만 그 자체의 openssl을 가지고 있습니다. 즉, openssl 확장을 비활성화하면 $ v [ 'ssl_version'];에 영향을 미치지 않습니다. curl이 ssl을 지원하는지 확인하고 싶다면 분리 된 openssl 확장의 존재에 의지해서는 안되며 curl_version()['ssl_version']에 의존해서는 안된다고 설명했습니다.// google.com`, 컬이 실패 할 경우, 다음 오류를 잡아, 그리고 알 수가 설치되지 않은 :

if (!curl_version()['features'] & CURL_VERSION_SSL) { 
    echo "SSL is not supported with this cURL installation."; 
} 
관련 문제