Lo que yo suelo hacer es generar una constante ROOT en cada página, y luego usar esta constante para todos los includes:
Páginas en un directorio de primer nivel Código PHP:
define('ROOT','.');
include ROOT.'includes/archivo.php');
### Más código
include ROOT.'includes/archivo2.php');
Páginas en un directorio de segundo nivel Código PHP:
define('ROOT','..');
include ROOT.'includes/archivo.php');
### Más código
include ROOT.'includes/archivo2.php');
Páginas en un directorio de tercer nivel Código PHP:
define('ROOT','../..');
include ROOT.'includes/archivo.php');
### Más código
include ROOT.'includes/archivo2.php');
Un include dentro de archivo2.php Código PHP:
include ROOT.'otro_archivo.php';
No uso el $_SERVER['DOCUMENT_ROOT']; porque dará problemas si hay que cambiar el nivel de todo el sitio (p.ej. de
http://www.misitio.com/ a
http://www.misitio.com/carpeta/
Un saludo,