In verschiedenen Serverumgebungen weist PHP $_SERVER['DOCUMENT_ROOT']
Super Global manchmal einen abschließenden Schrägstrich auf und manchmal nicht. Ich hätte gedacht, dass dieses Problem in direktem Zusammenhang mit der DocumentRoot
Definition des Apache in der httpd.conf
Datei steht:
dh ich hätte gedacht, wenn es httpd.conf
keinen abschließenden Schrägstrich enthält:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
dann echo $_SERVER['DOCUMENT_ROOT']
sollte / var / www / live / current geben
und wenn httpd.conf
es einen abschließenden Schrägstrich enthält:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
dann echo $_SERVER['DOCUMENT_ROOT']
sollte / var / www / live / current / geben
Dies ist unter Ubuntu 10.04 der Fall, aber unter RHEL 5.5 wird ein abschließender Schrägstrich hinzugefügt, $_SERVER['DOCUMENT_ROOT']
selbst wenn unter Apache keiner definiert wurde.
Irgendeine Idee, warum das passiert? Gibt es einen Konfigurationsparameter, den ich vermisse?
Als Referenz:
- PHP 5.3.3 von RHEL (Problem tritt auf): PHP 5.3.3 (cli) (erstellt: 23. Juli 2010, 16:26:53 Uhr)
- PHP-Version von Ubuntu (kein Problem): PHP 5.3.2-1ubuntu4.2 mit Suhosin-Patch (cli) (erstellt: 13. Mai 2010, 20:03:45 Uhr)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
. Es werden automatisch alle mehrfachen Schrägstriche und auch der nachfolgende entfernt. Wenn Sie immer einen abschließenden Schrägstrich wünschen, verketten Sie ihn mit dem Ergebnis des obigen Aufrufs vonrealpath()
. Nicht drin.