Dans différents environnements de serveur, le PHP $_SERVER['DOCUMENT_ROOT']
super global a parfois une barre oblique de fin et parfois non. J'aurais pensé que ce problème est directement lié à la façon dont Apache DocumentRoot
est défini dans le httpd.conf
fichier:
c'est-à-dire que j'aurais pensé que si httpd.conf
ne contient aucune barre oblique:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
alors echo $_SERVER['DOCUMENT_ROOT']
devrait donner / var / www / live / current
et s'il httpd.conf
contient une barre oblique de fin:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
alors echo $_SERVER['DOCUMENT_ROOT']
devrait donner / var / www / live / current /
C'est le cas sur Ubuntu 10.04 mais sur RHEL 5.5 une barre oblique de fin est ajoutée $_SERVER['DOCUMENT_ROOT']
même si aucune n'a été définie sur Apache.
Une idée pourquoi cela se produit? Y a-t-il un paramètre de configuration qui me manque?
Pour référence:
- PHP 5.3.3 de RHEL (un problème se produit): PHP 5.3.3 (cli) (build: 23 juillet 2010 16:26:53)
- Version PHP d'Ubuntu (pas de problème): PHP 5.3.2-1ubuntu4.2 avec Suhosin-Patch (cli) (construit: 13 mai 2010 à 20:03:45)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
. Il supprime automatiquement toutes les barres obliques multiples ainsi que la dernière. Si vous voulez toujours une barre oblique de fin, concaténez-la au résultat de l'appel ci-dessus àrealpath()
. Pas à l'intérieur.