VirtualDocumentRoot работает хорошо, но не вносит никаких изменений в $ _SERVER [& quot; DOCUMENT_ROOT & quot;]

Я использую директиву VirtualDocumentRoot для динамических виртуальных хостов на Apache,
теперь мои виртуальные хосты работают хорошо
но когда я проверяю значение $ _SERVER [«DOCUMENT_ROOT»] он по-прежнему имеет значение первого определения DocumentRoot
не значение VirtualDocumentRoot!

краткая часть моего файла «http.conf»:

UseCanonicalName Off
DocumentRoot "/var/www/html"
<VirtualHost *:80>
ServerAdmin admin@localhost

VirtualDocumentRoot "/var/vhosts/%0"
ErrorLog "logs/dynamic-vhosts-error.log"CustomLog "logs/dynamic-vhosts-access.log" combined

</VirtualHost>

когда я запускаю этот код PHP ниже

<?php
echo $_SERVER["DOCUMENT_ROOT"];
?>

В результате я получаю / var / www / html.
Если я прокомментирую эту строку

#DocumentRoot "/var/www/html"

результат PHP будет

/etc/httpd/htdocs

Но я хочу, чтобы значение $ _SERVER [«DOCUMENT_ROOT»] было таким:

/var/vhosts/exampleDomain.com

Есть ли решение для этого?

2

Решение

увидеть http://joshbenner.me/blog/quick-tip-get-proper-document-root-when-using-mod-vhost-alias/

Я нашел отличное решение для этого в соответствующем отчете об ошибках Apache: просто добавьте следующую строку в конфигурацию Apache в определении виртуального хоста VirtualDocumentRoot:

php_admin_value auto_prepend_file /path/setdocroot.php

Затем создайте ссылочный PHP-файл и установите его как его содержимое:

<?php
$_SERVER['DOCUMENT_ROOT'] = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['SCRIPT_FILENAME']);

Теперь при каждой загрузке страницы исполняется этот файл, который правильно устанавливает DOCUMENT_ROOT.

1

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

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

По вопросам рекламы [email protected]