In diversi ambienti server, il PHP $_SERVER['DOCUMENT_ROOT']
super global a volte ha una barra finale e talvolta no. Avrei pensato che questo problema fosse direttamente correlato al modo in cui Apache DocumentRoot
è definito nel httpd.conf
file:
cioè avrei pensato che se httpd.conf
non contiene una barra finale:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
allora echo $_SERVER['DOCUMENT_ROOT']
dovrebbe dare / var / www / live / current
e se httpd.conf
contiene una barra finale:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
allora echo $_SERVER['DOCUMENT_ROOT']
dovrebbe dare / var / www / live / current /
Questo è il caso di Ubuntu 10.04 ma su RHEL 5.5 viene aggiunta una barra finale $_SERVER['DOCUMENT_ROOT']
anche se nessuna è stata definita su Apache.
Qualche idea del perché accada questo? C'è un parametro di configurazione che mi manca?
Per riferimento:
- PHP 5.3.3 di RHEL (il problema si verifica): PHP 5.3.3 (cli) (costruito: 23 lug 2010 16:26:53)
- Versione PHP di Ubuntu (nessun problema): PHP 5.3.2-1ubuntu4.2 con Suhosin-Patch (cli) (costruito: 13 maggio 2010 20:03:45)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
. Rimuove automaticamente tutte le barre multiple e anche quella finale. Se si desidera sempre una barra finale concatenarla al risultato della chiamata precedenterealpath()
. Non al suo interno.