如何从 VirtualDocumentRoot 更新我的 php DOCUMENT_ROOT 变量

如何从 VirtualDocumentRoot 更新我的 php DOCUMENT_ROOT 变量

我在虚拟主机配置中使用 VirtualDocumentRoot。

我的 VirtualDocumentRoot 设置为 /var/www/%1/,如果我创建一个文件夹,比如 test,它会按预期工作。问题是,当我在 php 文件中使用 $_SERVER["DOCUMENT_ROOT"] 时,它会重新调整 /var/www。是否可以让 php 返回与 VirtualDocumentRoot 中配置的 $_SERVER["DOCUMENT_ROOT"] 相同的路径。

答案1

如果您可以编辑 PHP,则可以计算正确的 DOCUMENT_ROOT 并更新引导程序上的变量。以下是示例:http://blog.suffolk-web-design.co.uk/2008/09/apache-automatic-sites-using.html

答案2

按照@Thomas 的回答链接中的建议,我是这样处理的;

在 httpd.conf 中的动态虚拟主机指令中,我添加了这个 php prepend;

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 数组的索引。

希望这能帮助其他有同样问题的人...

相关内容