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

Как я могу обновить мою переменную php DOCUMENT_ROOT из VirtualDocumentRoot

Я использую VirtualDocumentRoot в своей конфигурации виртуального хоста.

Мой VirtualDocumentRoot установлен в / var / www /% 1 /, и если я создаю папку, скажем, test, она работает должным образом. Проблема в том, что когда я использую $ _SERVER ["DOCUMENT_ROOT"] в моих файлах php, он перенастраивает / var / www. Возможно ли, чтобы php возвращал тот же путь для $ _SERVER ["DOCUMENT_ROOT"], настроенный в VirtualDocumentRoot.

Если вы можете редактировать свой PHP, вы можете вычислить правильный DOCUMENT_ROOT и обновить переменную в начальной загрузке. Вот пример: http://blog.suffolk-web-design.co.uk/2008/09/apache-automatic-sites-using.html

Следуя совету из ссылки в ответе @Thomas, я вот как поступил с этим;

В моей директиве динамического виртуального хоста в httpd.conf я добавил это добавление php;

php_admin_value auto_prepend_file /var/www/html/uat.mydomain.co.uk/update_doc_root.php

Затем в корне моего каталога uat я сохранил небольшой файл, который добавлен к все запросы, удовлетворяемые динамической записью виртуального хоста (не все хосты на этом сервере динамические, и я не хочу связываться с другими). В него я вложил это;

<?php
$path = explode("/",str_replace($_SERVER['DOCUMENT_ROOT'],"",$_SERVER['SCRIPT_FILENAME']));
$_SERVER['DOCUMENT_ROOT'] .= "/" . $path[1] . "/" . $path[2];

Это работает для меня, потому что мой VirtualDocumentRoot находится на два уровня ниже корня моего httpd-документа. Если у вас глубже, вам нужно будет настроить индексы массива $ path.

Надеюсь, это поможет другим с той же проблемой ...