В различных серверных средах PHP $_SERVER['DOCUMENT_ROOT']
super global иногда имеет косую черту, а иногда - нет. Я бы подумал, что эта проблема напрямую связана с тем, как Apache DocumentRoot
определен в httpd.conf
файле:
т.е. я бы подумал, что если не httpd.conf
содержит косой черты:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
тогда echo $_SERVER['DOCUMENT_ROOT']
должен дать / var / www / live / current
и если httpd.conf
содержит косую черту:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
тогда echo $_SERVER['DOCUMENT_ROOT']
должен дать / var / www / live / current /
Это имеет место в Ubuntu 10.04, но в RHEL 5.5 добавляется косая черта, $_SERVER['DOCUMENT_ROOT']
даже если ни один не был определен в Apache.
Есть идеи, почему это происходит? Есть ли параметр конфигурации, который мне не хватает?
Для справки:
- PHP 5.3.3 RHEL (проблема возникает): PHP 5.3.3 (cli) (сборка: 23 июля 2010 г. 16:26:53)
- PHP-версия Ubuntu (без проблем): PHP 5.3.2-1ubuntu4.2 с Suhosin-Patch (cli) (сборка: 13 мая 2010 г. 20:03:45)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
. Он автоматически удаляет все множественные слэши, а также завершающий. Если вы всегда хотите использовать косую черту, соедините ее с результатом вышеупомянутого вызоваrealpath()
. Не внутри.