我在我的虚拟主机configuration中使用VirtualDocumentRoot。
我的VirtualDocumentRoot设置为/ var / www /%1 /,如果我创build一个文件夹说testing,它按预期工作。 问题是,当我在我的php文件中使用$ _SERVER [“DOCUMENT_ROOT”]时,它正在重新调用/ var / www。 是否有可能让PHP返回$ _SERVER [“DOCUMENT_ROOT”]在VirtualDocumentRootconfiguration相同的path。
如果您可以编辑您的PHP,您可以计算正确的DOCUMENT_ROOT并更新引导程序上的variables。 这是一个例子: http : //blog.suffolk-web-design.co.uk/2008/09/apache-automatic-sites-using.html
根据@Thomas的回答中的build议,我就是这样处理的。
在我的httpd.conf中的dynamic虚拟主机指令中,我添加了这个php prepend;
php_admin_value auto_prepend_file /var/www/html/uat.mydomain.co.uk/update_doc_root.php
然后在我的uat目录的根目录下,我保存了一个小文件,这个文件是由dynamic虚拟主机条目满足的所有请求的前缀(并不是所有主机都是dynamic的,我不想和其他主机混淆) 。 在这里,我把这个;
<?php $path = explode("/",str_replace($_SERVER['DOCUMENT_ROOT'],"",$_SERVER['SCRIPT_FILENAME'])); $_SERVER['DOCUMENT_ROOT'] .= "/" . $path[1] . "/" . $path[2];
这对我有用,因为我的VirtualDocumentRoot是在我的httpd文档根目录下的两个级别。 如果你更深入,你将需要调整$ path数组的索引。
希望这可以帮助他人解决同样的问题