Este es un problema con el que me he encontrado recientemente: un apache mal configurado en un servidor de Internet. Esto significa que todos los scripts que se basan en $_SERVER['DOCUMENT_ROOT']
se rompen. La solución más fácil que he encontrado es simplemente configurar la variable en algunos archivos globales de inclusión que se comparten, pero es un dolor no olvidarlo. Mi pregunta es, ¿cómo determino la raíz correcta del documento programáticamente?¿Cómo determinar programáticamente la raíz del documento en PHP?
Por ejemplo, en un host, la configuración es la siguiente:
$_SERVER['DOCUMENT_ROOT'] == '/htdocs'
las raíces reales de documento son:
test.example.com -> /data/htdocs/example.com/test
www.example.com -> /data/htdocs/example.com/www
y me gustaría una secuencia de comandos que se ejecuta desde www.example.com/blog/
(en la ruta /data/htdocs/example.com/www/blog
) para obtener el valor correcto de /data/htdocs/example.com/www
.
En otro host, la configuración es un poco diferente:
$_SERVER['DOCUMENT_ROOT'] == '/srv'
test.example.com -> /home/virtual_web/example.com/public_html/test
www.example.com -> /home/virtual_web/example.com/public_html/www
¿Hay alguna solución para esto? ¿O es la única forma de no confiar nunca en $_SERVER['DOCUMENT_ROOT']
y arreglar todo el software que estoy ejecutando en mis sitios? Reparar esto en el lado del servidor no parece ser una opción, todavía tengo que encontrar un host donde esto se haya configurado correctamente. Lo mejor que obtuve fue una raíz de documento que apuntaba a www.example.com, que al menos estaba dentro de open_basedir; usaban otro esquema de nombres, www.example.com apuntaría al /u2/www/example_com/data/www/
.
Algunos scripts que he instalado son "demasiado inteligentes" y saben en qué directorio (relativo a la raíz del documento teórico) están instalados, y anexan esto al documento raíz (después de que lo obtuvieron de la base de datos). Todavía tendría que modificar el código de cada directorio para quitar los directorios ... ¿o no? –