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 :(xampp/php/php.ini
:) gracias, PD: NO OLVIDES REINICIAR APACHE DESPUÉS DETuve que agregar
extension=php_openssl.dll
a miphp.ini
archivo ubicado enxampp/php/php.ini
. De alguna manera no estaba allí, después de agregarlo y reiniciar Apache todo funcionaba bien.fuente
simplemente agregue dos líneas en su archivo php.ini.
Me está funcionando.
fuente
allow_url_include = On
que me resolvió.Su Apache probablemente no está compilado con soporte SSL. Use cURL en lugar de file_get_contents de todos modos. Pruebe este código, si falla, tengo razón.
fuente
$xmlresults = file_get_contents($urlquery);
con$xmlresults = curl($urlquery);
. PHP Script lo ejecutó bien con los mismos resultados que file_get_contents (). Ejecutándolo como página web PHP a través de localhost / tutorial / retrieve_website.php y obtengo este error: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'
básicamente necesita compilar Apache con soporte SSL, también debe habilitar cURL que es un par de veces más rápido que FGC y tiene numerosas opciones. No tengo idea de cómo hacer esto en Windows, lo siento.return curl_exec($curl);
, ¿eso no impediría que securl_close($curl);
ejecutara en la siguiente línea?He habilitado la extensión openssl y me funciona :)
; extension = php_openssl.dll
a
extension = php_openssl.dll
fuente
En mi caso, el problema se debió a que WAMP usaba un php.ini diferente para CLI que Apache, por lo que la configuración realizada a través del menú WAMP no se aplica a CLI. Simplemente modifique la CLI php.ini y funciona.
fuente
C:\path\to\wamp\bin\php\php5.3.10\php.ini
en OpenSuse 12.1 lo único que se requería era:
fuente
Para mí tuve que descomentar estas líneas en php.ini:
"ext" es aplicable si php_openssl.dll se encuentra en la carpeta "ext".
Nota: Tuve que hacer esto para dos de mis archivos php.ini, de lo contrario no funcionaría. Uno ubicado en la carpeta de instalación vs.php, y el otro en la carpeta PHP
Fuente
fuente
En MAC AMPPS, actualicé el php-5.5.ini con lo siguiente y ahora funciona.
fuente
En mi caso (PHP 7.3 en Windows en modo FastCGI) fue sin comentarios
extension=openssl
. Not extension = php_ openssl , ya que la mayoría de las personas publican aquí.(Lo mismo se publicó aquí , pero sin detalles sobre el sistema operativo, que puede ser una diferencia clave aquí).
fuente
PHP7, en el archivo php.ini, elimine el ";" antes de
extension=openssl
fuente
Problema con file_get_contents para las solicitudes https en Windows , descomente las siguientes líneas en el archivo php.ini:
fuente
En su lugar, puede usar esta función si curl está instalado en su sistema:
fuente
Después de husmear todo el día, descubrí la respuesta gracias a esta guía: http://piwigo.org/forum/viewtopic.php?id=15727
Básicamente, en Eclipse -> Windows -> Preferencias -> Ejecutables PHP, hay una sección sobre dónde se hace referencia al .exe y .ini. Los valores predeterminados estaban en el directorio de Eclipse cuando instala la característica SDK de herramientas de desarrollo de PHP desde Eclipses Instalar nuevo software en el menú Ayuda.
Entonces, en lugar de eso, agregué un nuevo ejecutable llamado PHP 5.3.5 (CGI) y hice referencia a cgi.exe y .ini desde la carpeta php de xampp.
Gracias webarto por darme tu tiempo para ayudarme.
fuente
Estoy usando opsenSUSE Leap, y tuve el mismo problema: significa que no hay soporte para OpenSSL. Así es como lo resolví:
sudo service apache2 restart
Eso es todo, ya terminaste.
fuente
También recibí este error. Me di cuenta de que mi versión de PHP no tenía OpenSL compilado, así que simplemente agregar la directiva de extensión a php.ini no fue suficiente. No sé cómo tiene que resolver esto en su caso particular, pero para mí, uso macports, y el comando fue simplemente:
fuente
Para aquellos que usan Winginx (basado en nginx en lugar de basado en Apache), lo arreglé con estos 4 pasos:
En el menú Herramientas , presione la configuración Winginx PHP5 (no importa el 5 en el nombre ...):
Seleccione la versión de PHP que desea que cambie php.ini :
En la pestaña Extensiones PHP, seleccione la extensión php_openssl y presione el botón Guardar :
reinicie el servicio PHP apropiado a través de la barra de tareas ( Detener e iniciar ):
fuente
Prueba esto:
fuente
Si está utilizando el servidor wamp, vaya al icono, haga clic en este
Luego vaya a PHP y luego haga clic en la extensión PHP, habría que php_openssl necesitaría activar desde allí y reiniciar el servidor wamp
fuente
Dentro de simple_html_dom.php cambia el valor de la
$offset
variable de-1
a0
. este error generalmente ocurre cuando migras a PHP 7.HtmlDomParser::file_get_html
utiliza un desplazamiento predeterminado de-1
, pasar0
debería solucionar su problema.fuente