繁体   English   中英

PHP在服务器中获取网站根绝对URL?

[英]PHP get website root absolute URL in server?

我非常依赖$_SERVER["DOCUMENT_ROOT"]来获取绝对路径。 但是,这不适用于URL未指向根的站点。

我将网站存储在以下文件夹中:

  • SITE1
  • 站点2

都直接在根内。 有没有办法在服务器中获取当前站点根目录的路径?

它应该返回:

   /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

您只需将dirname($_SERVER['SCRIPT_NAME'])附加到$_SERVER['DOCUMENT_ROOT']

更新

该网站似乎是“挂载”在该文件夹上的目录,因此SCRIPT_NAME显然是/

因此,要完成这项工作,您必须使用__DIR__dirname(__FILE__)来查找脚本在文件系统中的位置。

更新2

整个站点没有单一的index.php控制器,因此也不起作用。

下面的表达式用字符串“减法”来查找公共路径。 你有一个已知的前缀(文档根),一个未知的(根文件夹)和一个已知的后缀(脚本路径),所以要找到前两个,你取完整的绝对路径( __FILE__ )并减去已知的后缀:

substr(__FILE__, 0, -strlen($_SERVER['SCRIPT_NAME']));

如果包含的文件需要此值,则必须先将其存储在常量中,然后才能包含依赖脚本。

对于未来的谷歌,这对我也有用

substr(substr(__FILE__, strlen(realpath($_SERVER['DOCUMENT_ROOT']))), 0, - strlen(basename(__FILE__)));

只需使用getcwd()获取当前脚本所在文件夹的当前绝对服务器路径。

您可以在网站顶部定义一个常量,以便网站的其余部分可以依赖该路径。

define('MY_SERVER_PATH', getcwd());

使用以下方法从服务器设置中获取绝对根URL

   str_replace($_SERVER['DOCUMENT_ROOT']."/",$_SERVER['PHPRC'],$_SERVER['REAL_DOCUMENT_ROOT'])

或使用getcwd() 它获取应用程序的当前工作目录

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM