簡體   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