En diferentes entornos de servidor, el $_SERVER['DOCUMENT_ROOT']
súper global de PHP a veces tiene una barra diagonal final y otras no. Pensé que este problema está directamente relacionado con cómo DocumentRoot
se define Apache en el httpd.conf
archivo:
es decir, habría pensado que si httpd.conf
no contiene una barra diagonal final:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
entonces echo $_SERVER['DOCUMENT_ROOT']
debería dar / var / www / live / current
y si httpd.conf
contiene una barra inclinada final:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
entonces echo $_SERVER['DOCUMENT_ROOT']
debería dar / var / www / live / current /
Este es el caso en Ubuntu 10.04 pero en RHEL 5.5 se agrega una barra inclinada, $_SERVER['DOCUMENT_ROOT']
incluso si no se definió ninguno en Apache.
¿Alguna idea de por qué sucede esto? ¿Hay un parámetro de configuración que me falta?
Para referencia:
- PHP 5.3.3 de RHEL (se produce un problema): PHP 5.3.3 (cli) (construido: 23 de julio de 2010 16:26:53)
- Versión PHP de Ubuntu (sin problemas): PHP 5.3.2-1ubuntu4.2 con Suhosin-Patch (cli) (construido: 13 de mayo de 2010 20:03:45)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
. Elimina automáticamente todas las barras múltiples y también la final. Si siempre desea una barra inclinada final, coníquela al resultado de la llamada anterior arealpath()
. No dentro de ella.