Hola remizero,
Saludos.
Te puedo presentar otra alternativa para evitar este tipo de problema.
Me encanta aplicar el método MVC (modelo, vista, controlador)
http://es.wikipedia.org/wiki/Modelo_Vista_Controlador , que me imagino debes conocer, y aquí es cuando te aconsejo aplicar ese "controlador" para evitar estos dolores de cabeza.
A pesar de que te pregunta es otra, espero que en algún futuro lo apliques, y mi manera de manejar esos archivos, basado en tu ejemplo, sería de la siguiente manera:
Tienes tu estructura de carpetas API:
raiz/api/bd/bd.php
raiz/api/bd/conexion.php
raiz/api/bd/comunes/...
raiz/api/bd/configuracion/...
raiz/api/bd/documentacion/...
raiz/api/bd/estructura/...
raiz/api/bd/motores/...
raiz/api/bd/reflexion/...
raiz/api/bd/sql/...Estructura del proyecto para la API:
raiz/modelo/
raiz/modulos/login/login.php
raiz/modulos/login/loginCtrl.php
raiz/modulos/...
raiz/config.php
raiz/index.phpSuponiendo que tengo un formulario para loguearse, necesitaría estos archivos:
raiz/modulos/login/login.php // Interfaces de usuario para el formulario
raiz/modulos/login/loginCtrl.php // Configuración para comprobar en la db si el usuario existe
raiz/api/bd/bd.php // Configuración a la DB
raiz/api/bd/conexion.php // Conexión a la DB.
raiz/controladorLogins.php // Controlador para administrar el logins.
raiz/index.php // Indice de la página.
Mi primera pantalla es el index.php, en el cual, está compuesta por un encabezado, un cuerpo y un pie. En ese index.php llamaría a "controladorLogins.php" si el usuario no se ha logueado:
Archivo controladorLogins.php:
<?php
include ("raiz/api/bd/bd.php");
include ("raiz/api/bd/conexion.php");
include ("raiz/modulos/login/loginCtrl.php");
include ("raiz/modulos/login/login.php");
?>
Lo mismo sucediera con los demás archivos dependiendo de la acción del usuario.
otro ejemplo:
Documentación:
Si el usuario presiona sobre un menú llamado Documentación, llamaría una acción que cargue y vea alguna documentación en la pagina.
El usuario presionó sobre este link:
<a href="controladorDocumentacion.php?accion=ver">Ver Documentación<a/>
La página se dirige a "controladorDocumentacion.php" con una variable llamada "accion" que contiene la palabra "ver"
controladorDocumentacion.php verifica y muestra según la acción que solicitó el usuario:
<?php
if (accion == "ver"){
include ("raiz/api/bd/bd.php");
include ("raiz/api/bd/conexion.php");
include ("raiz/configuracion.php");
include ("raiz/modulos/documentacion/verDocumentos.php");
}
?>
Como notarás, los controladores siempre lo coloco en la carpeta raíz, donde está el index.php y de ahí comienzo a llamar a los demás archivos que se encuentra en las subcarpetas.
Según la acción que tome el usuario, voy incluyendo los archivos necesarios, como en el ejemplo anterior.
Espero que te sirva para el próximo proyecto y así evitaría esos llamados desde otras subcarpetas, que la verdad dan dolores de cabeza así como lo mostraste.
Saludos.