Константы среды PHP: SITE_HTMLROOT против DOCUMENT_ROOT

Я провел тест и оба $_SERVER["SITE_HTMLROOT"] а также $_SERVER["DOCUMENT_ROOT"] кажется, возвращаются по тому же пути. Есть ли какая-то ситуация, в которой они могут отличаться, и если нет, то стоит ли рассматривать выбор одного над другим?

0

Решение

Как документация $_SERVER[] объясняет:

$_SERVER массив, содержащий информацию, такую ​​как заголовки, пути и местоположения сценария Записи в этом массиве создаются веб-сервером. Нет никакой гарантии, что каждый веб-сервер предоставит какой-либо из них; серверы могут пропустить некоторые или предоставить другие, не перечисленные здесь. Тем не менее, большое количество этих переменных учитывается в »CGI / 1.1 спецификация, так что вы должны иметь возможность ожидать их.

Также обратите внимание, что значения, имена ключей которых начинаются с HTTP_ извлекаются из заголовков HTTP-запроса, и они будут отсутствовать, если запрос не содержит соответствующих заголовков.

По вашему вопросу:

Есть ли какая-то ситуация, в которой они могут отличаться, и если нет, то стоит ли рассматривать выбор одного над другим?

Как объясняет @AlvaroGonzález в своем комментарии, $_SERVER["SITE_HTMLROOT"] обеспечивается MediaTemple, которая является веб-хостинговой компанией.
Очевидно, что использование $_SERVER["SITE_HTMLROOT"] в коде будет препятствовать его запуск в другой среде, которая не предоставляет значение.

Кроме того, я не рекомендую использовать $_SERVER["DOCUMENT_ROOT"] или. Даже если он, вероятно, работает в большинстве сред, к которым вы можете обратиться, лучше (и проще) написать свой код для работы, не заботясь о том, где на диске он находится. Все, что ему нужно, находится внутри каталога проекта; вы можете получить пути к различным файлам и каталогам проекта во время выполнения, используя магическую константу __FILE__, функция dirname() и конкатенация строк.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector