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 :(