En este post vamos a ver un problema que pasa con file_get_contents
en PHP cuando usamos dicha función para hacer una petición http o queremos mostrar el contenido de una página y la descargamos con esta función.
Recuerda que igualmente podemos usar file_get_contents
para hacer una petición HTTP usando stream_context_create.
Bien, veamos qué hacer si file_get_contents no funciona en PHP, no muestra errores ni avisos o devuelve false
sin razón aparente.
Depurando file_get_contents
En algunos servidores mal configurados, la función va a fallar silenciosamente pero devolverá false
. Lo primero que debemos hacer es comprobar en dónde está el problema.
Si es una petición HTTP podemos comprobar usando otra librería o método para comprobar que el servidor está bien (como Postman). En caso de que sí, pasemos al siguiente paso.
Solución
Normalmente file_get_contents
falla porque, por seguridad o configuración, allow_url_fopen
y/o allow_url_include
está deshabilitado en el php.ini.
Lo único que hay que hacer es habilitarlo y reiniciar el servidor en algunos casos. Se debe ver así:
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
allow_url_fopen=On
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-include
allow_url_include=On
Y con eso debería de funcionar. Yo tuve ese problema recientemente al implementar un Captcha con PHP.
Muchas gracias ahora entiendo por que no funcionaba en el servidor, efectivamente era eso, te debo una <3 igual queria poner el captcha jajaja
Hola es posible que el fallo lo genere el firewall de Windows ? Ya probé las dos entradas comentadas acá y sigue sin funcionar