VirtualHost 的 DocumentRoot

VirtualHost 的 DocumentRoot

我习惯将 DocumentRoot 作为网站 DocRoot 位置的绝对路径,通常类似于/usr/local/www/apache2/data/virtualhost_name。然后可以通过变量从 PHP 访问它$_SERVER['DOCUMENT_ROOT']

我曾在多个共享主机提供商上托管过网站,它们都采用这种方式。现在我转到了一个新的提供商,它的设置不同。PHP 总是$_SERVER['DOCUMENT_ROOT']显示/。我在服务器上的不同文件夹中有几个网站,但它们仍然都显示/为 DocumentRoot。

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

答案1

我猜他们已经对每个站点进行了 CHROOT,这在许多共享托管服务提供商中很常见,以免泄露服务器的目录结构。

在控制台中,如果你执行

ls -l

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

还要检查当前文件的位置

<?php
echo dirname(__FILE__);
?>

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

尽管我还没有检查 CHROOT 是否会改变 PHP 中的 DOCUMENT_ROOT,但我认为它会。

但是,我不明白将 DOCUMENT_ROOT 设置为 / 会有什么问题,只要您从 $_SERVER 全局变量动态加载它而不是对目录进行硬编码,它就不会成为问题。

相关内容