EspañolDeutschFrançaisItalianoPortuguêsРусскийΕλληνικά日本語中文(简体)हिन्दी; हिंदीالعربية
PF Preguntas - Foro

Cómo solucionar el error “open_basedir restriction in effect. File is not within the allowed path(s)” en tu servidor con PHP

Webmasters y SEO  
 
Cómo solucionar el error “open_basedir restriction in effect. File is not within the allowed path(s)” en tu servidor con PHP

Cuando programas en PHP en un servidor web normalmente haces multitud de includes o requires a otros archivos de tu aplicativo web. Ya sea porque necesites alguna clase o ciertas funciones que, por facilidad, modularidad y limpieza de tu código, localizas en otra serie de archivos bien clasificados y estructurados.

La inclusión o requerimiento de archivos en PHP, o incluso el acceso al propio archivo mediante la función fopen, cuando la ruta es correcta, normalmente no da problemas, a no ser que el archivo en cuestión, o el directorio que lo alberga, no tenga los permisos correspondientes de lectura. Pero otras veces, ya sea como medida de seguridad o por cualquier otro motivo, los archivos a los que necesitamos acceder se encuentran fuera de la carpeta web de nuestro proyecto, es decir, en carpetas que están a niveles inferiores a las de la carpeta raíz de nuestra web.

Posiblemente te haya ocurrido alguna vez que, al intentar acceder fuera de la carpeta raíz de tu web, el sistema te haya denegado el acceso, aún teniendo los permisos necesarios para el mismo, con el siguiente mensaje:

Esto nos indica que la directiva de PHP, open_basedir, está impidiendo que accedamos a la ubicación donde se encuentra el archivo. Tal como te comentamos, open_basedir es una directiva que indica cual es el límite de los ficheros a los que PHP puede acceder según la ruta o árbol de directorios especificado, así, si el archivo que quieres usar queda por debajo de la misma, el sistema te arrojará este error.

 

Modificación del archivo php.ini

Esta directiva se configura en el archivo php.ini, pero además, puede también habilitarse en el archivo de configuración de Apache. Así, como primera medida para paliar este error, debes acceder al archivo de configuración de PHP, buscar la línea en cuestión y modificarla con la ruta o rutas permitidas.

En este ejemplo anterior, PHP se configura para que el sistema pueda acceder tanto a todos los niveles superiores a partir de /ruta/webs/miweb/www, como a todos los superiores a /ruta/webs/miweb, siempre que los permisos de acceso de las distintas carpetas y archivos que estén por encima así lo permitan.

Una vez modificado el archivo php.ini y reiniciado el servidor web, el acceso al archivo en cuestión debería poder realizarse y, por tanto, el error debería desaparecer.

 

Modificación del archivo de configuración de Apache

Si aún así el error persiste, es muy probable que en el archivo de configuración de Apache tengas activada también esta directiva. Para ello, localiza dicho archivo, que dependiendo de la instalación que tengas estará en unas rutas u otras, normalmente en /etc/apache2/ o en /home/tu-usuario/conf/web/. El archivo suele tener el nombre de apache2.conf o sapache2.conf, dependiendo de si usas HTTPS o no.

Una vez dentro, localiza la entrada <VirtualHost> para tu dominio en cuestión, y dentro de la etiqueta <Directory> debería aparecer algo parecido a lo siguiente:

que es donde se está configurando esta directiva. Tan simple como modificar o añadir la ruta o rutas que quieres que tenga esta directiva, guardar los cambios y reiniciar el servidor. Una vez hecho, el error habrá desaparecido.

De esta forma puedes acceder mediante includes, requires o incluso mediante la función fopen a archivos que estén por debajo de la raíz de tu sitio web, pudiendo así tener en esas rutas archivos que necesiten un cierto grado de seguridad, y haciendo de esta forma que el error “open_basedir restriction in effect” comentado, termine desapareciendo.

Déjanos un comentario o entra al  Foro
Share on Facebook Tweet about this on Twitter Share on Google+ Pin on Pinterest Share on Reddit Share on VK Share on StumbleUpon Share on Tumblr Share on LinkedIn Email this to someone Print this page

Artículos relacionados