IT

래퍼 "https"를 찾을 수 없습니다. PHP를 구성 할 때 랩퍼를 활성화하는 것을 잊었습니까?

lottoking 2020. 6. 25. 07:42
반응형

래퍼 "https"를 찾을 수 없습니다. PHP를 구성 할 때 랩퍼를 활성화하는 것을 잊었습니까?


문제는 문제입니다. 나는 이것과 관련하여 해결책을 철저히 조사했으며 이것에 관한 주제가 있다는 것을 알고 그것을 따라 갔으며 아무것도 효과가 없었습니다. 그것은 지금까지 내가 한 모든 것을 정확하게 나열하겠다고 말하고 있습니다. Windows XP 컴퓨터의 최신 Eclipse 버전에서 Zend Debugging으로 PHP 5.2.14를 실행하고 있습니다. 1GB의 RAM이 있습니다. Apache, MySQL 및 FileZilla가 설치된 XAMPP가 설치되어 있습니다.

XAMPP에서 다음을 수행했습니다 (이 변경 중에 Apache가 꺼져 있음). XAMPP 제어판 에서 관리자클릭 하고로 이동했습니다 https:// localhost/xampp/. 거기에서 나는 환영 페이지 의이 줄의 인증서를 수락했습니다.

OpenSSL 지원을 위해서는 https : // 127.0.0.1 또는 https : // localhost와 함께 테스트 인증서를 사용하십시오.

같은 섹션에서 확인했습니다 phpinfo(). '환경'에서 SERVER["HTTPS"]입니다 on. 'Apache Environment'에서 HTTPS입니다 On. 'PHP 변수 아래에서 _SERVER["HTTPS"]입니다 On. '의 Phar'에서 OpenSSL support한다 disabled(내선 / openssl을 설치). Phar를 활성화하는 방법을 모르겠습니다.

이제 C : \ xampp의 파일 자체와 관련하여 PHP 폴더로갔습니다. (죄송합니다보다 안전한) 모두 생산 및 개발의 php.ini 파일에서, 내가 가진 allow_url_fopen=On, allow_url_include=On그리고 그 때문에 나는, 세미콜론을 제거되지 extension=php_openssl.dll더 이상 주석. 심지어 .dll이 PHP 폴더의 ext 폴더에 있음을 확인했습니다. libeay32.dll 및 ssleay32.dll은 모두 PHP 및 Apache 폴더에 있습니다. Apache 폴더에는 생산적이거나 개발적인 php.ini 파일이 없습니다.

안전한 측정 을 위해 http://www.slproweb.com/products/Win32OpenSSL.html로 이동 하여 Win32 OpenSSL v1.0.0d를 설치했습니다.

이제 retrieve_website.php에서 문제의 코드 줄은 다음과 같습니다.

$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);

쿼리하는 두 개의 다른 웹 사이트가 있지만 HTTP를 통해 제공되며 제대로 작동합니다. 스크립트 끝 근처에 다음 코드 줄을 입력했습니다.

echo 'openssl: ',  extension_loaded  ('openssl') ? 'yes':'no', "\n";
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n";
echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n";
echo 'wrappers: ', var_dump($w);

Eclipse에서 PHP 스크립트로 실행하면 모든 결과가 다음과 같이 원하는 방식으로 완벽하게 출력됩니다.

openssl: yes
http wrapper: yes
https wrapper: yes
wrappers: array(10) {
  [0]=>
  string(5) "https"
  [1]=>
  string(4) "ftps"
  [2]=>
  string(3) "php"
  [3]=>
  string(4) "file"
  [4]=>
  string(4) "data"
  [5]=>
  string(4) "http"
  [6]=>
  string(3) "ftp"
  [7]=>
  string(13) "compress.zlib"
  [8]=>
  string(14) "compress.bzip2"
  [9]=>
  string(3) "zip"
}

이러한 모든 변경 사항에도 불구하고 (Apache를 시작한 후) http : //localhost/tutorial/retrieve_website.php 를 통해 Eclipse 및 Firefox에서 처음 PHP 스크립트에 액세스 할 때도 여전히 동일한 오류가 발생 합니다 .

경고 : file_get_contents () [function.file-get-contents] : 래퍼 "https"를 찾을 수 없습니다. PHP를 구성 할 때 활성화하는 것을 잊었습니까? C : \ xampp \ htdocs \ tutorial \ retrieve_website.php 29 행

경고 : file_get_contents (https : // www.googleapis.com/customsearch/v1?key= 제거 된 API ID & cx = 제거 된 검색 ID & q = The + Devil + went + down + to + Georgia & alt = atom & num = 5) [function.file-get-contents] : 스트림을 열지 못했습니다 : 29 행의 C : \ xampp \ htdocs \ tutorial \ retrieve_website.php에 해당 파일 또는 디렉토리가 없습니다.

경고 : DOMDocument :: loadXML () [domdocument.loadxml] : 33 행의 C : \ xampp \ htdocs \ tutorial \ retrieve_website.php에 입력으로 제공된 빈 문자열

openssl : 아니요 http 래퍼 : 예 https 래퍼 : 아니요 래퍼 : array (10) {[0] => string (3) "php"[1] => string (4) "file"[2] => string (4 ) "글로브"[3] => 문자열 (4) "데이터"[4] => 문자열 (4) "http"[5] => 문자열 (3) "ftp"[6] => 문자열 (3) " zip "[7] => 문자열 (13)"compress.zlib "[8] => 문자열 (14)"compress.bzip2 "[9] => 문자열 (4)"phar "}

내가 간과하거나 실패한 것은 무엇입니까? 내 자신의 지식으로, 나는 HTTPS와 OpenSSL에 관해 내가 연구 한 모든 것을 다했다.


내가 주석 처리 XAMPP에서 그것을 해결 ;extension=php_openssl.dll/apache/bin/php.ini 불구하고 은 phpinfo () 나에게 말하고 /php/php.ini로드 INI 파일이었다.

편집 : Ezra 답변은 확장 줄을 적절한 ini 파일에 직접 추가하는 가장 좋은 솔루션이라고 생각합니다.


에있는 파일에 추가 extension=php_openssl.dll해야 php.ini했습니다 xampp/php/php.ini. 어떻게 든 추가하고 Apache를 다시 시작한 후 모든 것이 제대로 작동했습니다.


php.ini 파일에 두 줄을 추가하십시오.

extension=php_openssl.dll
allow_url_include = On

나를 위해 일하고 있습니다.


Apache가 SSL 지원으로 컴파일되지 않았을 수 있습니다. 어쨌든 file_get_contents 대신 cURL을 사용하십시오. 이 코드를 사용해보십시오. 실패하면 옳습니다.

function curl_get_contents($url)
{
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
  $data = curl_exec($curl);
  curl_close($curl);
  return $data;
}

openssl 확장을 활성화했으며 나를 위해 작동합니다 :)

; extension = php_openssl.dll

extension = php_openssl.dll


필자의 경우 문제는 Apache와 CLI에 다른 php.ini를 사용하는 WAMP로 인해 발생했기 때문에 WAMP 메뉴를 통한 설정은 CLI에 적용되지 않습니다. CLI php.ini를 수정하면 작동합니다.


OpenSuse 12.1에서 필요한 것은 다음과 같습니다.

zypper in php5-openssl

나를 위해 php.ini에서 다음 줄의 주석을 제거해야했습니다.

extension=php_openssl.dll
extension_dir = "ext"

php_openssl.dll이 "ext"폴더에있는 경우 "ext"가 적용 가능합니다.

참고 : 두 개의 php.ini 파일에 대해이 작업을 수행해야 했습니다. 그렇지 않으면 작동하지 않습니다. 하나는 vs.php 설치 폴더에 있고 다른 하나는 PHP 폴더에 있습니다.

C:\Program Files (x86)\Jcx.Software\VS.Php\2013\Php 5.6
C:\Program Files (x86)\PHP\v5.6

출처


MAC AMPPS에서 php-5.5.ini를 다음과 같이 업데이트하여 작동합니다.

allow_url_include = On
extension=openssl.so

대신이 기능을 사용할 수 있습니다.

function get_url_contents($url){  
  if (function_exists('file_get_contents')) {  
    $result = @file_get_contents($url);  
  }  
  if ($result == '') {  
    $ch = curl_init();  
    $timeout = 30;  
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
    $result = curl_exec($ch);  
    curl_close($ch);  
  }  

  return $result;  
}

PHP7의 php.ini 파일에서 ";" 전에extension=openssl


Windows의 https 요청에 대한 file_get_contents 문제 는 php.ini 파일에서 다음 행의 주석을 해제하십시오.

extension=php_openssl.dll
extension_dir = "ext"

하루 종일 스누핑 한 후이 안내서 덕분에 답을 찾았습니다. http://piwigo.org/forum/viewtopic.php?id=15727

기본적으로 Eclipse-> Windows-> 환경 설정-> PHP 실행 파일 아래에 .exe 및 .ini가 참조되는 섹션이 있습니다. 도움말 메뉴의 Eclipse 새 소프트웨어 설치에서 PHP 개발 도구 SDK 기능을 설치할 때 기본 디렉토리는 Eclipse 디렉토리에있었습니다.

그 대신, PHP 5.3.5 (CGI)라는 새로운 실행 파일을 추가하고 xampp의 php 폴더에서 cgi.exe 및 .ini를 참조했습니다.

도와 주셔서 감사합니다.


opsenSUSE Leap을 사용하고 있는데 같은 문제가 있습니다. OpenSSL을 지원하지 않는다는 의미입니다. 이것이 내가 해결 한 방법입니다.

  1. YaST를 엽니 다.
  2. 소프트웨어 관리로 이동하십시오.
  3. 왼쪽 창의 검색 상자에 'php5-openssl'을 입력하고 Enter 키를 누르십시오.
  4. 오른쪽 창에서 'php5-openssl'옆에있는 확인란을 클릭하여 선택하고 'Accept (허용)'를 클릭하십시오 (OpenSSL 지원 추가).
  5. Apache를 다시 시작하십시오. sudo service apache2 restart

그게 다야, 끝났어.


이 오류도 발생했습니다. 내 PHP 버전에 openssl이 컴파일되지 않았으므로 php.ini에 확장 지시문을 추가하는 것만으로는 충분하지 않습니다. 나는 당신이 당신의 특정한 경우에 이것을 어떻게 해결해야할지 모르겠지만, 저에게는 macports를 사용하고 명령은 다음과 같습니다.

sudo port install php5-openssl

Winginx (Apache 기반이 아닌 nginx 기반)를 사용하는 사람들을 위해 다음 4 단계로 수정했습니다.

  1. 도구 메뉴가 히트 Winginx PHP5 구성을 합니다 (신경 쓰지 5 ... 이름 인치) :

    Winginx PHP5 설정

  2. php.ini 에서 변경 하려는 PHP 버전을 선택하십시오 .

    PHP 버전 선택

  3. On the PHP Extensions tab select the php_openssl extension and hit the Save button:

    php_openssl 선택

  4. restart the appropriate PHP service through the taskbar (Stop and Start):

    PHP 서비스 재시작


Try this:

function curl($url){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    $buffer = curl_exec($curl);
    curl_close($curl);
    return $buffer;
}


If you are using wamp server then go to icon click on this wamp server icon 이것을 클릭하십시오

Then go to PHP then click on PHP extension there would be php_openssl need to activate from there and restart wamp server 여기에서 활성 php_openssl


In my case (PHP 7.3 on Windows in FastCGI mode) it was uncommenting extension=openssl. Not extension=php_openssl, as most people post here.

(The same thing was posted here, but without details on OS which may be a key difference here.)


내부의 simple_html_dom.php 변화의 값 $offset에서 변수 -10. 이 오류는 일반적으로 PHP 7 로 마이그레이션 할 때 발생합니다 .

HtmlDomParser::file_get_html기본 오프셋 인을 사용하여 -1전달 0하면 문제가 해결됩니다.

참고 : https://stackoverflow.com/questions/5444249/unable-to-find-the-wrapper-https-did-you-forget-to-enable-it-when-you-config

반응형