Le problème est dans la question. J'ai fait une enquête approfondie pour trouver des solutions à ce sujet et je sais qu'il y a des sujets à cela et je les ai suivis aussi et rien n'a fonctionné. Cela étant dit, je vais énumérer exactement tout ce que j'ai fait jusqu'à présent. J'utilise PHP 5.2.14 avec Zend Debugging sur la dernière version d'Eclipse sur mon ordinateur Windows XP. J'ai 1 Go de RAM. J'ai XAMPP en cours d'exécution avec Apache, MySQL et FileZilla installés.
Sur XAMPP, j'ai fait ce qui suit (Apache était désactivé pendant ces changements): J'ai cliqué sur Admin dans le panneau de configuration XAMPP et je suis allé à https:// localhost/xampp/
. De là, j'ai accepté les certificats de cette ligne sur la page d'accueil:
Pour la prise en charge d'OpenSSL, veuillez utiliser le certificat de test avec https: // 127.0.0.1 ou https: // localhost.
Sur cette même section, j'ai vérifié phpinfo()
. Sous «Environnement», SERVER["HTTPS"]
est on
. Sous «Environnement Apache», se HTTPS
trouve On
. Sous 'Variables PHP, se _SERVER["HTTPS"]
trouve On
. Sous 'Phar', se OpenSSL support
trouve disabled
(install ext / openssl). Je ne sais pas comment activer celui de Phar.
Maintenant, en ce qui concerne les fichiers eux-mêmes dans C: \ xampp, je suis allé dans le dossier PHP. Sous la production et les fichiers php.ini développement (mieux prévenir que guérir), j'ai allow_url_fopen=On
, allow_url_include=On
et je l' ai enlevé le point - virgule, de sorte que extension=php_openssl.dll
n'est plus commenté sur. J'ai même confirmé que le .dll se trouve dans le dossier ext du dossier PHP. Les deux libeay32.dll et ssleay32.dll se trouvent dans les dossiers PHP et Apache. Le dossier Apache ne contient ni fichiers de production ni de développement php.ini.
Je suis allé à http://www.slproweb.com/products/Win32OpenSSL.html et ai installé Win32 OpenSSL v1.0.0d pour une mesure sûre.
Maintenant, la ligne de code en question dans mon retrieve_website.php ressemble à ceci:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
J'ai deux autres sites Web que j'interroge mais ils sont servis via HTTP et ils fonctionnent bien. J'ai également cette ligne de code entrée vers la fin du script:
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);
Lorsque je l'exécute en tant que script PHP sur Eclipse, tout sort parfaitement comme je le souhaite avec ces résultats:
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"
}
Malgré toutes ces modifications que j'ai apportées (après avoir démarré Apache), j'obtiens toujours les mêmes erreurs la première fois que j'accède à mon script PHP dans Eclipse et Firefox via http: //localhost/tutorial/retrieve_website.php :
Attention: file_get_contents () [function.file-get-contents]: Impossible de trouver le wrapper "https" - avez-vous oublié de l'activer lorsque vous avez configuré PHP? dans C: \ xampp \ htdocs \ tutorial \ retrieve_website.php à la ligne 29
Attention: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= ID d'API supprimé & cx = ID de recherche supprimé & q = The + Devil + est allé + bas + vers + Géorgie & alt = atom & num = 5) [function.file-get-contents]: impossible d'ouvrir le flux: aucun fichier ou répertoire de ce type dans C: \ xampp \ htdocs \ tutorial \ retrieve_website.php à la ligne 29
Attention: DOMDocument :: loadXML () [domdocument.loadxml]: Chaîne vide fournie en entrée dans C: \ xampp \ htdocs \ tutorial \ retrieve_website.php à la ligne 33
openssl: non wrapper http: oui wrapper https: pas de wrappers: array (10) {[0] => string (3) "php" [1] => string (4) "file" [2] => string (4 ) "glob" [3] => string (4) "data" [4] => string (4) "http" [5] => string (3) "ftp" [6] => string (3) " zip "[7] => string (13)" compress.zlib "[8] => string (14)" compress.bzip2 "[9] => string (4)" phar "}
Qu'est-ce que j'ai oublié ou omis de faire? À ma connaissance, j'ai fait tout ce que j'ai recherché concernant HTTPS et OpenSSL
/apache/bin/php.ini
, je ne le trouve pas dans XAMPP Portable Light 1.8.1? Cependantphp/php.ini
existe, mais activer ssl ici n'aide pas :(xampp/php/php.ini
:) merci, PS: N'OUBLIEZ PAS DE REDÉMARRER APACHE APRÈS SAUVEGARDERJ'ai dû ajouter
extension=php_openssl.dll
à monphp.ini
fichier situé dansxampp/php/php.ini
. D'une manière ou d'une autre, il n'était pas là, après l'avoir ajouté et redémarré Apache, tout fonctionnait bien.la source
ajoutez simplement deux lignes dans votre fichier php.ini.
ça marche pour moi.
la source
allow_url_include = On
qui a résolu le problème pour moi.Votre Apache n'est probablement pas compilé avec le support SSL. Utilisez de toute façon cURL au lieu de file_get_contents. Essayez ce code, s'il échoue, j'ai raison.
la source
$xmlresults = file_get_contents($urlquery);
par$xmlresults = curl($urlquery);
. PHP Script l'a très bien exécuté avec les mêmes résultats que file_get_contents (). L'exécuter en tant que page Web PHP via localhost / tutorial / retrieve_website.php et j'obtiens cette erreur:Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\tutorial\retrieve_website.php on line 14
'--with-openssl=/usr' '--with-openssl-dir=/usr'
fondamentalement, vous devez compiler Apache avec le support SSL, vous devez également activer cURL qui est deux fois plus rapide que FGC, et dispose de nombreuses options. Je ne sais pas comment faire cela sous Windows, désolé.return curl_exec($curl);
, cela n'empêcherait-il pascurl_close($curl);
l'exécution de la ligne suivante?J'ai activé l'extension openssl et cela fonctionne pour moi :)
; extension = php_openssl.dll
à
extension = php_openssl.dll
la source
Dans mon cas, le problème était dû au fait que WAMP utilisait un php.ini différent pour la CLI qu'Apache, donc vos paramètres définis via le menu WAMP ne s'appliquent pas à la CLI. Modifiez simplement le php.ini CLI et cela fonctionne.
la source
C:\path\to\wamp\bin\php\php5.3.10\php.ini
dans OpenSuse 12.1, la seule chose requise était:
la source
Pour moi, j'ai dû décommenter ces lignes dans php.ini:
«ext» est applicable si php_openssl.dll se trouve dans le dossier «ext».
Remarque: j'ai dû le faire pour deux de mes fichiers php.ini sinon cela ne fonctionnerait pas. L'un situé dans le dossier d'installation vs.php, et l'autre sur le dossier PHP
La source
la source
Sur MAC AMPPS, j'ai mis à jour le php-5.5.ini avec ce qui suit et maintenant cela fonctionne.
la source
Dans mon cas (PHP 7.3 sur Windows en mode FastCGI), il était sans commentaire
extension=openssl
. Pas extension = php_ openssl , comme la plupart des gens publient ici.(La même chose a été publiée ici , mais sans détails sur le système d'exploitation, ce qui peut être une différence clé ici.)
la source
PHP7, dans le fichier php.ini, supprimez le ";" avant
extension=openssl
la source
Problème avec file_get_contents pour les requêtes https sous Windows , décommentez les lignes suivantes dans le fichier php.ini:
la source
Vous pouvez utiliser cette fonction à la place si curl est installé sur votre système:
la source
Après avoir fouiné toute la journée, j'ai trouvé la réponse grâce à ce guide: http://piwigo.org/forum/viewtopic.php?id=15727
Fondamentalement, sous Eclipse -> Windows -> Préférences -> Exécutables PHP, il y a une section sur où le .exe et .ini sont référencés. Ceux par défaut se trouvaient dans le répertoire Eclipse lorsque vous installez la fonction SDK des outils de développement PHP à partir d'Eclipses Installer un nouveau logiciel dans le menu Aide.
Donc, au lieu de cela, j'ai ajouté un nouvel exécutable appelé PHP 5.3.5 (CGI) et référencé cgi.exe et .ini à partir du dossier php de xampp.
Merci webarto de donner votre temps pour m'aider.
la source
J'utilise opsenSUSE Leap, et j'ai eu le même problème - cela signifie qu'il n'y a pas de support pour OpenSSL. Voici comment je l'ai résolu:
sudo service apache2 restart
Voilà, vous avez terminé.
la source
J'ai aussi cette erreur. J'ai compris que ma version de PHP n'avait pas d'openssl compilé, donc ajouter simplement la directive d'extension à php.ini ne suffisait pas. Je ne sais pas comment vous devez résoudre cela dans votre cas particulier, mais pour moi, j'utilise macports, et la commande était juste:
la source
Pour ceux qui utilisent Winginx (basé sur nginx au lieu de basé sur Apache), je l'ai corrigé avec ces 4 étapes:
Dans le menu Outils, cliquez sur Winginx PHP5 Config (sans oublier les 5 dans le nom ...):
Sélectionnez la version PHP que vous souhaitez que le php.ini change:
Dans l' onglet Extensions PHP, sélectionnez l' extension php_openssl et cliquez sur le bouton Enregistrer :
redémarrez le service PHP approprié via la barre des tâches ( Arrêter et démarrer ):
la source
Essaye ça:
la source
Si vous utilisez le serveur wamp, allez sur l'icône, cliquez dessus
Ensuite, allez dans PHP puis cliquez sur l'extension PHP, il y aurait besoin de php_openssl pour activer à partir de là et redémarrer le serveur wamp
la source
Dans le simple_html_dom.php, changez la valeur de la
$offset
variable de-1
à0
. cette erreur se produit généralement lorsque vous migrez vers PHP 7.HtmlDomParser::file_get_html
utilise un décalage par défaut de-1
, la transmission0
devrait résoudre votre problème.la source