Я использую директиву 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
Есть ли решение для этого?
увидеть 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.
Других решений пока нет …