VirtualHost的DocumentRoot

我习惯了将DocumentRoot作为网站的DocRoot位置的绝对path,通常是/usr/local/www/apache2/data/virtualhost_name 。 这可以通过$_SERVER['DOCUMENT_ROOT']variables从PHP访问。

我在几个共享主机提供商上托pipe了网站,他们都是这样的。 现在我转移到一个新的供应商,它有不同的设置。 PHP的$_SERVER['DOCUMENT_ROOT']总是显示/ 。 我有不同的文件夹在服务器上的几个网站,但他们仍然都显示/为DocumentRoot。

我如何在自己的开发服务器上实现同样的function?

我猜他们已经把每个站点都chroot了,这在许多共享的托pipe服务提供商中是很常见的,所以不会泄露服务器的目录结构。

在控制台中,如果你做了

 ls -l 

Web服务器文件显示为由站点用户拥有? IE每个网站在服务器上都有自己的用户帐户。 如果是这样,我猜这是一个CHROOT,这很容易做到。 ( 这里有一些说明 )

还要检查当前文件的位置

 <?php echo dirname(__FILE__); ?> 

(这将显示当前文件的目录,如果文档根目录是“/”,那么该脚本应该返回类似“/myphpfile.php”的内容)

虽然我没有检查如果一个CHROOT会改变PHP的DOCUMENT_ROOT,我会假设它会。

但是,我不明白如何将DOCUMENT_ROOT当作/将是一个问题,只要您从$ _SERVER全局dynamic加载它,而不是硬编码目录,它应该不是一个问题。