PHP:如何从用户目录内部获取文档根?
-
08-10-2019 - |
题
我将各种PHP应用程序开发到不同的环境。尤其是在开发环境上,它们可以在任何地方,从document_root到/users/me/sites/derv/eusers/me/sites/soseapp/someapp/
在这些应用程序中,我需要知道“应用程序root”在哪里,曾经是真实的路径,一次是URL。路径没问题。假设我在App root Directory中有一个Bootstrap.php,它可以:
define("BASE_DIR", realpath(dirname(__FILE__)));
但是,我有问题可靠地获取基本URL。在大多数环境中
define("BASE_URL", str_replace($_SERVER['DOCUMENT_ROOT'],'',BASE_DIR) . "/");
现在,我的问题是:这在我的应用程序中位于用户目录内的环境中不起作用,因为PHP仍然看到了主要文档根。有人解决了这个问题吗?
解决方案
当服务器的配置为别名时,涉及realpath()和document_root的任何涉及的任何东西都会失败。考虑Apache具有这样的配置的方案:
DocumentRoot /home/httpd/html
Alias /testalias /home/otherdir
然后您可以在 example.com/testalias/script.php
.
脚本将返回:
realpath(dirname(__FILE__)) -> /home/otherdir
$_SERVER['DOCUMENT_ROOT'] -> /home/httpd/html
BASE_DIR -> /home/otherdir
BASE_URL -> /home/otherdir/
然而,该网站的其余部分实际上存在于 /home/httpd/html
您可能会更好地根据基于URL重建URL $_SERVER['SCRIPT_NAME']
, ,这是URL的路径/脚本名称部分:
$_SERVER['SCRIPT_NAME'] -> /testalias/script.php
不隶属于 StackOverflow