W różnych środowiskach serwerowych $_SERVER['DOCUMENT_ROOT']
super globalny PHP czasami ma końcowe ukośniki, a czasem nie. Wydaje mi się, że ten problem jest bezpośrednio związany ze DocumentRoot
zdefiniowaniem Apache w httpd.conf
pliku:
tzn. pomyślałbym, że jeśli httpd.conf
nie zawiera końcowego ukośnika:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
następnie echo $_SERVER['DOCUMENT_ROOT']
powinien dać / var / www / live / current
a jeśli httpd.conf
zawiera ukośnik:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
następnie echo $_SERVER['DOCUMENT_ROOT']
powinien dać / var / www / live / current /
Tak jest w przypadku Ubuntu 10.04, ale w RHEL 5.5 dodawany jest ukośnik końcowy, $_SERVER['DOCUMENT_ROOT']
nawet jeśli nie został zdefiniowany w Apache.
Wiesz, dlaczego tak się dzieje? Czy brakuje mi parametru konfiguracyjnego?
Na przykład:
- PHP 5.3.3 z RHEL (problem występuje): PHP 5.3.3 (cli) (zbudowany: 23 lipca 2010 16:26:53)
- Ubuntu w wersji PHP (bez problemu): PHP 5.3.2-1ubuntu4.2 z łatką Suhosin (cli) (zbudowany: 13 maja 2010 20:03:45)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
. Automatycznie usuwa wszystkie wielokrotne ukośniki, a także końcowy. Jeśli zawsze chcesz końcowego ukośnika połączyć go z wynikiem powyższego wywołania dorealpath()
. Nie w środku.