Logo de islavisual
Logo de islavisual IslaVisual
imagen de sección

Ultima revisión 17/02/2010

Solución al problema de los niveles de directorios en PHP

Cuando trabajamos bastante una página Web montada en PHP con muchas carpetas dentro, nos toparemos casi siempre con el problema de los directorios al incluir documentos en distintos directorios, pues siempre se debe especificar cuantas carpetas se desea retroceder (mediante “../”) ya que no hay opción para especificar una ruta absoluta.

La solución a este problema es bastante simple. Cree el siguiente código que debe ser incluido en la primera línea de todos los archivos PHP, en el que se cuentan los slashes (/) que determinan el número de carpetas donde se encuentra el archivo para retrocederlas y utilizarlas frente a las nuevas rutas que se necesiten.


<?php
    $pagina = $_SERVER['PHP_SELF'];
    $contar_slashes = substr_count($pagina, '/')-1;
    for($i=1;$i<=$contar_slashes;$i++){
        $nivel .= "../";
    }
    
    // Luego utilizamos la variable $nivel antepuesta a todas las funciones que requieran especificar un nivel de 
    // directorio, y que sea absoluto.
?>


Que lo podemos comprimir en una sola línea:


<?php for($i=1;$i <= substr_count($_SERVER['PHP_SELF'],'/')-1;$i++){$nivel .= "../";} ?>


Con un ejemplo, si nuestra página se encontrara 7 directorios adentro y deseamos hacer una inclusión de un archivo dentro de una carpeta llamada “includidos”, debemos incluir esta línea después del código anterior:


include($nivel.'incluidos/cabecera.php');


Así nos ahorraremos varias horas de desesperación cambiando los directorios cuando tenemos cientos de páginas dentro de carpetas bien organizadas. Quizas no te ha quedado muy claro, puedes descargar el siguiente ejemplo para que veas de que hablo.

Sobre el autor

Pablo Enrique Fernández Casado

CEO de IslaVisual, Manager, Full Stack Analyst Developer y formador por cuenta ajena con más de 25 años de experiencia en el campo de la programación y más de 10 en el campo del diseño, UX, usabilidad web y accesibilidad web. También es escritor y compositor de música, además de presentar múltiples soft kills como la escucha activa, el trabajo en equipo, la creatividad, la resiliencia o la capacidad de aprendizaje, entre otras.

Especializado en proveer soluciones integrales de bajo coste y actividades de consultoría de Usabilidad, Accesibilidad y Experiencia de Usuario (UX), además de ofrecer asesoramiento en SEO, optimización de sistemas y páginas web, entre otras habilidades.