El problema está en la pregunta. He realizado una investigación exhaustiva para encontrar soluciones con respecto a esto y sé que hay temas al respecto y los he seguido también y nada ha funcionado. Dicho esto, enumeraré exactamente todo lo que he hecho hasta ahora. Estoy ejecutando PHP 5.2.14 con Zend Debugging en la última versión de Eclipse en mi computadora con Windows XP. Tengo 1 GB de RAM. Tengo XAMPP ejecutándose con Apache, MySQL y FileZilla instalados.
En XAMPP, hice lo siguiente (Apache estaba apagado durante estos cambios): hice clic en Administrador desde el Panel de control de XAMPP y fui a https:// localhost/xampp/
. A partir de ahí, acepté los certificados de esta línea en la página de bienvenida:
Para soporte de OpenSSL, utilice el certificado de prueba con https: // 127.0.0.1 o https: // localhost.
En esa misma sección revisé phpinfo()
. En "Medio ambiente", SERVER["HTTPS"]
es on
. Bajo 'Apache Environment', HTTPS
es On
. En 'Variables PHP, _SERVER["HTTPS"]
es On
. En 'Phar', OpenSSL support
es disabled
(instalar ext / openssl). No sé cómo habilitar el Phar.
Ahora con respecto a los archivos en sí mismos en C: \ xampp, fui a la carpeta PHP. Bajo los dos archivos php.ini de producción y desarrollo (mejor prevenir que curar), tengo allow_url_fopen=On
, allow_url_include=On
y me quita el punto y coma, por lo que extension=php_openssl.dll
ya no esté comentada. Incluso confirmó que el .dll está en la carpeta ext de la carpeta PHP. Tanto libeay32.dll como ssleay32.dll están en las carpetas PHP y Apache. La carpeta Apache no contiene archivos php.ini productivos o de desarrollo.
Fui a http://www.slproweb.com/products/Win32OpenSSL.html e instalé Win32 OpenSSL v1.0.0d para una medida segura.
Ahora la línea de código en cuestión en mi retrieve_website.php se ve así:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
Tengo otros dos sitios web que consulto, pero se sirven a través de HTTP y funcionan bien. También tengo esta línea de código ingresada cerca del final del 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);
Cuando lo ejecuto como un script PHP en Eclipse, todo sale perfectamente bien como quiero junto con estos resultados:
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"
}
A pesar de todos estos cambios que hice (después de iniciar Apache), sigo teniendo los mismos errores la primera vez que accedo a mi script PHP en Eclipse y Firefox a través de http: //localhost/tutorial/retrieve_website.php :
Advertencia: file_get_contents () [function.file-get-contents]: No se puede encontrar el contenedor "https". ¿Olvidó habilitarlo cuando configuró PHP? en C: \ xampp \ htdocs \ tutorial \ retrieve_website.php en la línea 29
Advertencia: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= ID de API eliminada & cx = ID de búsqueda eliminada & q = The + Devil + fue + abajo + a + Georgia & alt = atom & num = 5) [function.file-get-contents]: no se pudo abrir la secuencia: No existe tal archivo o directorio en C: \ xampp \ htdocs \ tutorial \ retrieve_website.php en la línea 29
Advertencia: DOMDocument :: loadXML () [domdocument.loadxml]: cadena vacía suministrada como entrada en C: \ xampp \ htdocs \ tutorial \ retrieve_website.php en la línea 33
openssl: sin contenedor http: sí contenedor https: sin contenedores: 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] => cadena (13)" compress.zlib "[8] => cadena (14)" compress.bzip2 "[9] => cadena (4)" phar "}
¿Qué es lo que he pasado por alto o no he podido hacer? Que yo sepa, he hecho todo lo que he investigado sobre HTTPS y OpenSSL
/apache/bin/php.ini
no puedo encontrarlo en XAMPP Portable Light 1.8.1? Sin embargophp/php.ini
, existe, pero habilitar SSL aquí no ayuda :(