web-dev-qa-db-fra.com

Impossible de trouver l'emballage "https" avec file_get_contents

Appeler file_get_contents () avec https: // urls me donne l'erreur suivante:

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

J'ai lu 10+ SO questions et toutes disent d'activer extension=php_openssl.dll

Je l'ai fait et j'ai toujours des problèmes ...

Quoi d'autre cela pourrait-il être?

10
John Smith

Résolu

Pour résoudre cette erreur, vous devez installer le package OpenSSL pour PHP sur votre webserver .

Sur un FreeBSD server, vous devrez peut-être installer le paquet suivant: php53_openssl et redémarrer votre serveur Web.

Sur un Windows server, ouvrez votre fichier de configuration php.ini et décommentez simplement la ligne suivante:

 ;extension=php_openssl

et redémarrez le serveur Web. L'erreur devrait être résolue.

Référence: Je l'ai appris de ce lien qui a fonctionné pour moi .., le crédit lui revient donc.} _ 

9
Amit Shah

J'ai eu le même problème. J'essayais d'accéder au graphique de facebook. Ce n'était pas qu'il ne pouvait pas accéder à l'URL, c'était que Facebook renvoyait une erreur 400 parce que je ne transmettais pas de paramètres. Essayez de vous connecter à HTTPS sur un site disposant d'une connexion HTTPS opérationnelle. Par exemple. Essaye ça:

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

Si cela fonctionne, vous devez voir pourquoi la connexion HTTP à laquelle vous vous connectez échoue, car le problème n'est pas que vous ne pouvez pas vous connecter à HTTP, mais plutôt que ce à quoi vous vous connectez n'aime pas la demande.

0
coderama

Comme le disent les gens, vérifiez la configuration.

phpinfo.php

<?php
phpinfo();
?>

Recherchez OpenSSL sur la page Web. N'oubliez pas de redémarrer le serveur Web après avoir modifié le fichier php.ini.

Si vous ne pouvez pas utiliser file_get_contents () , utilisez plutôt cURL si disponible, c'est mieux à bien des égards et plus rapidement.

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