2013-09-05 19 views
10

file_get_contents Calling() con https: // URL mi danno il seguente errore:Impossibile trovare il wrapper "https" con file_get_contents

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

Ho letto 10+ SO domande e tutti loro dico: abilitare extension=php_openssl.dll

ho fatto questo e sto ancora problemi ...

che altro potrebbe essere?

+0

Probabilmente avremo bisogno di ulteriori informazioni per aiutarti ... Suppongo che tu esegua Windows considerando che stai provando a caricare un dll? Potresti provare a eseguire 'phpinfo()' e cercare una riga che dice: 'Supporto OpenSSL abilitato'? Dovrebbe essere sotto il titolo "openssl". –

+0

A quale URl ti stai connettendo? Puoi aprire https://www.namhost.com? Ho appena scoperto quando provo a connettermi all'URL di Facebook che sputa un errore di 400 perché i parametri non sono corretti, il che risulta essere il mio indirizzo IP non impostato correttamente nelle impostazioni. Cioè Posso accedere ai collegamenti HTTPS, non solo a quello di Facebook. – coderama

+1

Vedere http://stackoverflow.com/questions/5444249/unable-to-find-the-wrapper-https-did-you-forget-to-enable-it-when-you-config?rq=1 per un decente risposta. Leggi attentamente le risposte e abilita l'estensione nell'opportuno 'php.ini'. Non dimenticare di riavviare Apache. – GuyT

risposta

0

Ho avuto lo stesso problema. Stavo cercando di accedere al grafico di Facebook. Non era che non potesse accedere all'URL, era che Facebook restituiva un errore 400 perché non passavo i parametri attraverso. Prova a connetterti a HTTPS su un sito che avrà una connessione HTTPS funzionante. Per esempio. Prova questo:

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

Se funziona, si deve vedere il motivo per cui la connessione HTTPS ci si connette a sta fallendo, perché il problema non è che non è possibile connettersi a HTTPS, ma piuttosto che ciò che si sta collegando a non piaccia la richiesta.

+0

Non mi aiuta l'url dal browser funziona .. –

-1

Assicurati che allow_url_include e allow_url_fopen siano impostati su "On" in php.ini.

Decommentali se queste righe sono commentate.

Inoltre, è possibile utilizzare il seguente script per la diagnostica: (tratto dalla risposta accettata sulla How to get file_get_contents() to work with HTTPS?)

$w = stream_get_wrappers(); 
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); 
0

Come dice la gente, verificare con la configurazione.

phpinfo.php

<?php 
phpinfo(); 
?> 

Ricerca per OpenSSL sulla pagina web. Inoltre, non dimenticare di riavviare il WebServer dopo aver modificato il file php.ini.

Se non è possibile utilizzare file_get_contents(), utilizzare invece cURL se disponibile, è meglio in molti modi e più veloce.

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'); 
3

SOLVED

Per risolvere questo errore, è necessario installare il pacchetto OpenSSL per PHP sul vostro server web .

Su un server FreeBSD, potrebbe essere necessario installare il seguente pacchetto: php53_openssl e riavviare il server web.

Su un server di Windows , aprire il file di configurazione php.ini e semplicemente rimuovere il commento dalla seguente riga:

;extension=php_openssl 

e riavviare il server web. L'errore dovrebbe essere risolto.

Riferimento: I leart it from this link che ha funzionato per me .., quindi il merito va a lui.

Problemi correlati