簡體   English   中英

php獲取文件的根目錄

[英]php get the root of the file

我如何將根目錄獲取到主文件夾? 例如我在此位置運行文件:

public_html/admin/user/etc/index.php

我想包含來自的文件

public_html/includes/user/etc/function.php

所以我想做這樣的事情:

include(get_first_default_folder().'includes/user/etc/function.php');

代替:

include('../../../includes/user/etc/function.php');

您可以從$ _SERVER ['DOCUMENT_ROOT']使用文檔根目錄。

您可以將此行包含在index.php文件中。

include("{$_SERVER['DOCUMENT_ROOT']}includes/user/etc/function.php");

我通常是這樣做的。 $myDir = dirname(__FILE__); (或者您可以在PHP v5.3 +上使用__DIR__ )是特定文件所在的目錄名稱。您知道它在層次結構中的位置,因此您可以使用$myBaseDir = realpath('../../../'.$mydir) '。 Realpath將路徑擴展到其規范版本,不包括任何符號鏈接。 擁有完整路徑還可以在包括或以其他方式查找文件時加快速度。

我這樣做而不是使用$_SERVER['DOCUMENT_ROOT']是,如果我從命令行運行腳本,則該環境變量可能不存在-由網絡服務器設置。

我猜這有點笨拙,但對我有用。 在每個文件的開頭,我定義一個變量$root 第一級變量$root = './' (這不是必需的思想),第一個子文件夾是$root = '../' ,第二子文件夾是$root = '../../'等等。 $root總是將我帶到站點的根文件夾。

當我需要提供路徑時,只需執行include("{$root}includes/user/etc/function.php");

這幫助我擺脫了“沒有這樣的索引或文件”警告,因此我會堅持下去,直到找到更好的方法來做同樣的事情。

另外,您可以為每個文件夾級別定義一個常量,這樣就不必在每個文件的頂部添加$root (沒有測試過,所以我不知道以下語法是否正確。)相反,您可以執行以下操作:

  • {ROOT} includes / user / etc / function.php“);`//根目錄文件
  • {SUBFOLDER_LEVEL_ONE} includes / user / etc / function.php“);`//第一個子文件夾級別的文件

在某處定義常量之后:

  • define(“ ROOT”,“ ./”);
  • define(“ SUBFOLDER_LEVEL_ONE”,“ ../”);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM