我非常依赖$_SERVER["DOCUMENT_ROOT"]
获取绝对路径。但是,对于URL未指向根目录的网站,这不起作用。
我的网站存储在以下文件夹中:
直接在根目录内。有没有办法在服务器中获取当前站点根目录的路径?
它应该返回:
/var/chroot/home/content/02/6945202/html/site1 // If the site is stored in folder 'site1'
/var/chroot/home/content/02/6945202/html // If the site is stored in the root
答案 0 :(得分:12)
您只需将dirname($_SERVER['SCRIPT_NAME'])
追加到$_SERVER['DOCUMENT_ROOT']
。
<强>更新强>
网站似乎是“挂载”在该文件夹上的目录,因此SCRIPT_NAME
显然是/
。
因此,为了完成这项工作,您必须使用__DIR__
或dirname(__FILE__)
来查找脚本在文件系统中的位置。
更新2
整个网站没有单个index.php
控制器,因此也无法使用。
以下表达式执行字符串“减法”以查找公共路径。你有一个已知的前缀(文档根),一个未知的(根文件夹)和一个已知的后缀(脚本路径),所以要找到前两个,你取完整的绝对路径(__FILE__
)并减去已知后缀:
substr(__FILE__, 0, -strlen($_SERVER['SCRIPT_NAME']));
如果包含的文件需要此值,则必须先将其存储在常量中,然后才能包含相关脚本。
答案 1 :(得分:1)
对于未来的googlers,这对我也有用
substr(substr(__FILE__, strlen(realpath($_SERVER['DOCUMENT_ROOT']))), 0, - strlen(basename(__FILE__)));
答案 2 :(得分:0)
使用以下方法从服务器设置中获取绝对根网址
str_replace($_SERVER['DOCUMENT_ROOT']."/",$_SERVER['PHPRC'],$_SERVER['REAL_DOCUMENT_ROOT'])
或使用getcwd()。它获取应用程序的当前工作目录