В различных серверных средах 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(). Не внутри.