Назад | Перейти на главную страницу

DocumentRoot VirtualHost

Я привык, что DocumentRoot является абсолютным путем к местоположению DocRoot веб-сайта, обычно что-то вроде /usr/local/www/apache2/data/virtualhost_name. Затем он доступен из PHP через $_SERVER['DOCUMENT_ROOT'] переменная.

Я размещал веб-сайты у нескольких поставщиков виртуального хостинга, и у всех это было именно так. Теперь я перешел к новому провайдеру, у которого он настроен иначе. PHP $_SERVER['DOCUMENT_ROOT'] всегда показывает /. У меня есть несколько веб-сайтов на сервере в разных папках, но все они показывают / как DocumentRoot.

Как я могу добиться того же на собственном сервере разработки?

Я предполагаю, что они CHROOT'd каждый сайт, это распространено у многих провайдеров виртуального хостинга, чтобы не раскрывать структуру каталогов сервера.

В консоли, если вы выполните

ls -l

отображаются ли файлы веб-сервера как принадлежащие пользователю сайта? I.E. у каждого веб-сайта есть собственная учетная запись пользователя на сервере. Если это так, я бы предположил, что это CHROOT, что достаточно легко сделать. (Некоторые инструкции здесь)

Также проверьте, где находится текущий файл

<?php
echo dirname(__FILE__);
?>

(Это покажет вам каталог текущего файла, если корень документа - '/', тогда этот скрипт должен вернуть что-то вроде '/myphpfile.php')

Хотя я не проверял, изменит ли CHROOT DOCUMENT_ROOT в PHP, я предполагаю, что это произойдет.

Однако я не понимаю, почему наличие DOCUMENT_ROOT as / было бы проблемой, если вы загружаете его динамически из глобального $ _SERVER, а не жестко кодируете каталог, это не должно быть проблемой.