Le problème est dans la question. J'ai fait une recherche approfondie pour trouver des solutions à ce sujet et je sais qu'il y a des sujets à ce sujet et je les ai suivis aussi, mais 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 fait tourner XAMPP avec Apache, MySQL et FileZilla.
Sur XAMMP, j'ai procédé comme suit (Apache était éteint pendant ces modifications) : J'ai cliqué sur Admin dans le panneau de configuration de XAMMP et je suis allé sur https:// localhost/xampp/. De là, j'ai accepté les certificats à partir de cette ligne sur la page d'accueil : "Pour le support 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 activé. Sous Environnement Apache, HTTPS est activé. Sous Variables PHP, _SERVER["HTTPS"] est activé. Sous Phar, le support OpenSSL est désactivé (installer 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. Dans les fichiers php.ini de production et de développement (mieux vaut prévenir que guérir), j'ai allow_url_fopen=On, allow_url_include=On, et j'ai supprimé le point-virgule pour que extension=php_openssl.dll ne soit plus commenté. J'ai même confirmé que le fichier .dll se trouve dans le dossier ext du dossier php. Les fichiers libeay32.dll et ssleay32.dll se trouvent tous deux dans les dossiers php et apache. Le dossier apache ne contient pas les fichiers php.ini de prod ou dev.
Je suis allé à http://www.slproweb.com/products/Win32OpenSSL.html et installé Win32 OpenSSL v1.0.0d par mesure de sécurité.
La ligne de code en question dans mon fichier retrieve_website.php serait la suivante :
$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 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 comme un script PHP sur Eclipse, tout fonctionne 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 les modifications que j'ai apportées (après avoir démarré Apache), j'obtiens toujours les mêmes erreurs que la première fois lorsque j'exécute mon fichier php en tant que page Web PHP sur Eclipse et sur Firefox en tant que http:// localhost/tutorial/retrieve_website.php :
Warning: file_get_contents() [function.file-get-contents]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in C:\xampp\htdocs\tutorial\retrieve_website.php on line 29
Warning: file_get_contents(https:// www.googleapis.com/customsearch/v1?key=*removed API ID*&cx=*removed search ID*&q=The+Devil+went+down+to+Georgia&alt=atom&num=5) [function.file-get-contents]: failed to open stream: No such file or directory in C:\xampp\htdocs\tutorial\retrieve_website.php on line 29
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Empty string supplied as input in C:\xampp\htdocs\tutorial\retrieve_website.php on line 33
openssl: no http wrapper: yes https wrapper: no 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 négligé ou omis de faire ? À ma connaissance, j'ai fait tout ce que j'ai recherché concernant https et openssl.