parcialmente mal...
DOCUMENT_ROOT entrega dos versiones... basadas en directorios y sistema operativo
en Windows.... regresa
C:\EasyPHP\www -por ejemplo
en *NIX... regresa
/etc/var/www -por ejemplo
en ninguno de los casos devuelve el nombre del servidor, para eso esta SERVER_NAME
solo que aqui si hay una cosa mas extraña, y depende mucho de la configuracion del servidor....
a veces, en sistema *nix solo devuelve una
/ en ves de la ruta completa... y eso es raro, ya que asi no sirve....
en mi caso, ya que uso Windows de prueba y subo a mi HOST *nix (cosa que también me altera el DOCUMENT_ROOT) ya que la ruta real es... /foo/bar/www (por ejemplo) y me de la
/ sola.... que mal....
tuve que ingeniármelas para averiguar la verdadera raíz de ambos sistemas, sin tener que cambiar el código cada ves.... e hice esto (son tan solo dos constantes)
index.php Código PHP:
<?php
define('BASE_DIR', // Ruta real de la aplicacion (aqui)
dirname(__FILE__)
);
define('BASE_URL', // URL de la aplicacion (aqui)
str_replace('\\', '/', // Reparamos!
dirname($_SERVER['SCRIPT_NAME'])
));
?>
siempre y cuando, todo se incluya desde el
index.php funciona... sino, pueden intentarlo... suerte!
PDTA: al menos, a mi si me funciona y esto, no lo he modificado desde que lo pensé...
BASE_DIR nos devuelve la ruta completa basada en el script actual... la real
BASE_URL nos devuelve la ruta relativa basada en la URL actual...
osea, si me script esta en... C:\EasyPHP\www\
www\foo\bar\un.php
BASE_DIR devuelve C:\EasyPHP\www\foo\bar (sistema de archivos)
BASE_URL devuelve solo foo/bar (lo que es la URL)