it-swarm.com.de

Der Wrapper "https" konnte mit file_get_contents nicht gefunden werden

Beim Aufruf von file_get_contents () mit https: // URLs wird der folgende Fehler angezeigt:

warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?

Ich habe 10+ SO Fragen gelesen und alle sagen, dass sie extension=php_openssl.dll aktivieren sollen.

Ich habe das gemacht und ich habe immer noch Probleme ...

Was könnte es sonst sein?

10
John Smith

Gelöst

Um diesen Fehler zu beheben, müssen Sie das Paket OpenSSL für PHP auf Ihrem Webserver installieren.

Auf einem FreeBSD Server müssen Sie möglicherweise das folgende Paket installieren: php53_openssl und den Webserver neu starten.

Öffnen Sie auf einem Windows server Ihre php.ini-Konfigurationsdatei und kommentieren Sie einfach die folgende Zeile aus:

 ;extension=php_openssl

und starten Sie den Webserver neu. Der Fehler sollte behoben sein.

Hinweis: Ich habe es von diesem Link der für mich gearbeitet hat .., also geht ihm gut. 

9
Amit Shah

Stellen Sie für PHP 7 unter Windows 64bit sicher, dass libcrypto-1_1-x64.dll zum Pfad der Umgebungsvariablen. Beispielsweise: C:\php\libcrypto-1_1-x64.dll;

2
Артем

Ich wollte diesen Leckerbissen nur hinzufügen, weil ich stundenlang mit diesem Problem zu kämpfen hatte und endlich etwas herausgefunden habe, das funktioniert. Bei vielen dieser WAMP/XAMP/MAMP-Installationen werden die Konfigurationsdateien in nicht standardmäßigen Verzeichnissen abgelegt (d. H. C:\MAMP\conf\php\php7.2.10\php.ini). Sie müssen sicherstellen, dass Ihre PHP-Cli die INI, die Sie ändern, geladen hat.

$ php --ini

Wenn es nicht auf die richtige INI verweist oder überhaupt keine Konfigurationsdatei lädt, können Sie die Umgebungsvariable PHPRC für den Benutzer, der das Skript ausführt, so ändern, dass sie auf die richtige Position für die INI Stellen Sie außerdem sicher, dass der Parameter extension_dir in der Datei php.ini den richtigen Pfad zum Speicherort Ihrer Erweiterungen enthält.

Hoffe das hilft.

0
jackv

Ich hatte das gleiche Problem. Ich habe versucht, auf Facebook Graph zuzugreifen. Es war nicht so, dass auf die URL nicht zugegriffen werden konnte, sondern Facebook gab einen 400-Fehler zurück, da ich keine Parameter weitergab. Versuchen Sie, eine Verbindung zu HTTPS auf einer Site herzustellen, an der eine HTTPS-Verbindung besteht. Z.B. Versuche dies:

file_get_contents("https://www.namhost.com");

Wenn dies funktioniert, müssen Sie feststellen, warum die HTTPs-Verbindung, zu der Sie eine Verbindung herstellen, fehlschlägt, da das Problem nicht darin besteht, dass Sie keine Verbindung zu HTTPs herstellen können, sondern dass das, zu dem Sie eine Verbindung herstellen, die Anfrage nicht mag.

0
coderama

Wie die Leute sagen, überprüfen Sie die Konfiguration.

phpinfo.php

<?php
phpinfo();
?>

Suchen Sie auf der Webseite nach OpenSSL. Vergessen Sie auch nicht, den WebServer neu zu starten, nachdem Sie die Datei php.ini geändert haben.

Wenn Sie file_get_contents () nicht verwenden können, verwenden Sie stattdessen cURL, sofern verfügbar. Dies ist in vielerlei Hinsicht besser und schneller.

function url($url,$option = null) {

    $cURL = curl_init();

    if ($option) {
        curl_setopt($cURL, CURLOPT_URL, $url.$option);
    } else {
        curl_setopt($cURL, CURLOPT_URL, $url);
    }

    curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($cURL, CURLOPT_AUTOREFERER, 1);
    curl_setopt($cURL, CURLOPT_HTTPGET, 1);
    curl_setopt($cURL, CURLOPT_VERBOSE, 0);
    curl_setopt($cURL, CURLOPT_HEADER, 0);
    curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, 1);
    curl_setopt($cURL, CURLOPT_DNS_USE_GLOBAL_CACHE, 0);
    curl_setopt($cURL, CURLOPT_DNS_CACHE_TIMEOUT, 2);

    $output['page'] = curl_exec($cURL);
    $output['contentType'] = curl_getinfo($cURL, CURLINFO_CONTENT_TYPE);

    curl_close($cURL);

    return $output;

}

$page = url('https://example.com/','i/like/subfolders');
0
Anuga