URL file-access is disabled in the server configuration

PHP Logo

Teniendo en cuenta el advenimiento de PHP 6, la ya estandarización definitiva de PHP 5 como versión estable de este lenguaje, y que PHP 4 dejará de tener soporte a finales del próximo mes de Diciembre, decidí actualizar un sistema con PHP 4.4.7 y Apache 1.3.3.9 a PHP 5.2.5, y Apache 2.0.61.

Todo el proceso de upgrade fue bien, por las dudas obviamente hice backups de los respectivos archivos de configuración de cada servicio. Luego del upgrade, procedí a reinstalar ciertos añadidos como ZendOptimizer, Eaccelerator, Mod_Security, etc, todo salió perfectamente y sin problemas.

Faltaba la verificación final de las páginas, por ello cargué página por página que había en este server, y todas me dieron bien, excepto una que usaba includes remotos, generaba el siguiente error:

URL file-access is disabled in the server configuration

Al parece la variable allow_url_fopen desaparece de php.ini, y debe ser reemplazada para que los includes remotos funcionen, simplemente reemplacen:

allow_url_fopen = On

Por:

allow_url_include = On

Luego de eso, reinician el servidor web y listo :D

This entry was posted in SysAdmin Tips and tagged . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

21 Comments

  1. juan
    Posted December 28, 2007 at 6:55 pm | Permalink

    Me sacaste de un apuro! gracias!

  2. Posted January 10, 2008 at 2:06 pm | Permalink

    MUCHAS GRACIAS, yo tenía exactamente ese problema y no sabía que hacer.

    Que raro que el php.ini no incluya una línea con la variable “allow_url_include”, aunque sea para descomentarla o para ponerle el On.

    Una vez más gracias!!!!!!

  3. Posted January 12, 2008 at 3:17 pm | Permalink

    No hay problema, siempre que encuentro alguna solución trato de documentarla, háganlo ustedes también en la medida que puedan, es una buena manera de ayudar a los demás :D

    Un saludo!

  4. Posted January 25, 2008 at 2:30 am | Permalink

    Muchas gracias, la verdad me tenia loco a mi también este tema después de actualizar, menos mal que gente como tu comparte lo que aprende ;)

  5. Posted June 3, 2008 at 12:03 am | Permalink

    Tambien no hace falta remplazar la linea sino agregar una nueva linea.

    allow_url_fopen = On
    allow_url_include = On

    y funciona tb..
    Saludos

  6. Posted June 3, 2008 at 5:10 pm | Permalink

    Gracias por tu comentario Javier, no sabía ese truco!

    Saludos,
    Esteban.-

  7. Posted July 11, 2008 at 3:20 am | Permalink

    lo unico que se logra activando esta directiva es exponerse y dejar vulnerable la web a un ataque RFI..

  8. Posted July 11, 2008 at 6:57 pm | Permalink

    Si Hieluki, lamentablemente aveces hay que tener un balance entre seguridad y usabilidad, si usas un servidor con scripts comerciales, nunca podrás tener un sistema super seguro, como bien sabrás, los scripts generalmente se escriben pensando en facilitar las cosas sin importar si incurren en graves fallos a nivel de web.

    Gracias por tu comentario.

    Saludos,
    Esteban.-

  9. DnLx
    Posted October 25, 2008 at 1:48 pm | Permalink

    Muchas gracias… tuve un kernel panic personal, hasta que econtre tu solucion, me sirvio de mucho, gracias…

  10. DnLx
    Posted October 26, 2008 at 11:49 pm | Permalink

    Ahora una pregunta… antes, cuando no tenia apache 2.0.63 podia usar este codigo en mis paginas webs html:

    include(‘http://www.dominio.com/pagina.htm’);

    Ahora, no sale nada… lei que hay que tener habilitado short_open_tag en php.ini efectivamente lo tengo en On pero aun no sale. Sabes como se puede usar?

  11. Posted October 27, 2008 at 6:15 pm | Permalink

    DnLx,

    Yo también estoy corriendo Apache 2.0.63 en varios servidores y con el mismo código no tengo problema alguno para incluir URLs, ejemplo que probé hace 1 minuto:

    include(‘http://www.encuentroalternativo.com’);

    ¿Qué te dice la gente del soporte técnico de tu proveedor de Hosting? A ellos es a los primeros que deberías consultar.

    Saludos,

  12. Leonardo Novoa
    Posted January 25, 2009 at 1:17 am | Permalink

    Muchachos porfavor una ayuda muuuy urgente estoy en lo mismo actualizando un sistema que tiene versiones viejas, el caso es que pues llevo como una semana arreglando todo y todos los dias reviso un problema que tengo ya cambie el valor en el php.ini allow_url_fopen por on y se me quito el error pero no me incluye las funciones remotas de donde antes las incluia porfavor ayuda jeje estoy cansado de revisar el tema todos los dias le dedico un tiempo para ver si lo puedo resolver mientras hago el resto de la actualizacion.

    gracias de antemano,

  13. Posted January 25, 2009 at 12:37 pm | Permalink

    Leonardo,

    No te quemes mucho la cabeza, simplemente podés dejar las dos lineas, así ambas funciones están activadas:

    allow_url_fopen = On
    allow_url_include = On

    Luego reinica el servidor web y debería funcionar.

    Saludos,
    Esteban.-

  14. Leonardo Novoa
    Posted January 25, 2009 at 7:39 pm | Permalink

    Esteban gracias por tu respuesta y esos dos valores estan con On pero pues no c si sea o no posible o si talves este haciendo las cosas mal segun veo, no se si puedo o no incluir una funcion de un archivo php de forma remota con un include, el codigo que tome no estaba terminado y talves quien lo hizo antes estaba haciendo pruebas para ver si podia o no incluir la funcion remota del php cosa que es posible por que el codigo no estaba terminado me explico.
    En un primer archivo php1.php esta una funcion

    y en un segundo quiero incluir a php1 pero esta en un servidor remoto

    y esto no me da problemas por la inclusion pero no me encuentra la funcion nuevamente digo que no c si sea o no posible hacer esto o si realmente era una prueba del antiguo desarrollador gracias y hasta luego.
    Gracias por la atencion.
    Saludos

  15. Posted January 25, 2009 at 8:05 pm | Permalink

    Ya esto no sería tanto a nivel de server, sino más bien programación misma, y lamentablemente no soy desarrollador PHP. Creo que lo ideal sería que plantearas este problema en algún foro de programación PHP, como por ejemplo éste: http://www.forosdelweb.com/f18/

    Plantea tu duda allí, y de seguro logras solucionarlo ;)

    Saludos.

  16. Leonardo Novoa
    Posted January 25, 2009 at 8:10 pm | Permalink

    gracias enserio muchas gracias pues voy a ver que pasa en esta direccion hasta luego :D

  17. Posted February 1, 2009 at 11:20 pm | Permalink

    Yo cambie esas lineas hace un tiempo cuando me actualizaron la version del apache de mis servidores. Le puse las lineas esas en On en el php.ini y se soluciono.

    Pero AHORA me actualizaron el soft de nuevo parece y no me funcionan los includes externos nuevamente. Necesito ayuda, a alguien le paso?
    Saludos y gracias

  18. Posted June 23, 2009 at 9:48 pm | Permalink

    Funciona bien, recién tenía este problema y con esto se arregló.

    YOJOJO!!!!

  19. iim.hlk
    Posted September 9, 2010 at 1:43 am | Permalink

    GRACIAS ME SACASTE UN PEDO n.n

  20. Posted December 31, 2010 at 7:22 am | Permalink

    Gracias Esteban, me fue de perlas ;)
    Posiblemente me ahorraste un montón de horas.

    Por cierto, pondré mi granito de arena.
    En mi caso, para poder editar el archivo php.ini tuve que conectarme al servidor por ssh, navegar hasta el directorio en el que está el archivo y ejecutarle este comando:

    chattr -i php.ini

    sin hacer eso no me dejaba editarlo! no me preguntéis el porqué… jejeje, pero no me dejaba.

    Por cierto, mi archivo tenía estas líneas

    ; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
    allow_url_fopen = Off

    ; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
    allow_url_include = Off

    y las convertí a “On” solo la primera y se me solucionó. Mi problema venía al intentar ejecutar un

    fopen(‘http://….’);

    y modificando el allow_url_fopen es suficiente. Así me evito abrir un posible agujerito de seguridad innecesariamente ;)

    Un saludote!
    SERGI

  21. Posted December 31, 2010 at 4:15 pm | Permalink

    Hola Sergi,

    Gracias por aportar tu experiencia. El chattr -i tuviste que aplicarlo para remover la inmutabilidad del archivo, que justamente se aplica con chattr +i ;D

    Saludos,
    Esteban.-

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>