dirname(__FILE__) 取到的是當前文件的絕對路徑,也就是說,比起相對路徑,查找速度是最快的。
PHP 常量 dirname(__file__)
__FILE__ :被稱為PHP魔術常量 ,返回當前執行PHP腳本的完整路徑和文件名,包含一個絕對路徑
1)dirname(__FILE__) 函數返回的是腳本所在在的路徑。
比如文件 b.php 包含如下內容:
<?php $basedir = dirname(__FILE__); echo $basedir //將在頁面打印出一個這個文件所在絕對路徑! ?>
我做的測試得到結果: E:/website/othertest/cms
這個相當於, asp中的server.mappth的用法
如果b.php被其他目錄里的a.php文件require 或者 include 去引用的話。 變量$basedir 的內容還是b.php所在的那個文件夾的路徑。 而不是變成a.php文件所在的目錄。
2)dirname(__FILE__) 一般會返回文件所的當前目錄到系統根目錄的一個目錄結構。
不會返回當前的文件名稱。 dirname(__FILE__) 也可能返回一個 . (當前目錄) [原因是 b.php 文件在 http.conf 或者 PHP 配置開發環境的默認WEB目錄下
幾個 PHP 的“魔術常量”
名稱 說明
__LINE__ 文件中的當前行號。
__FILE__ 文件的完整路徑和文件名。如果用在包含文件中,則返回包含文件名。自 PHP 4.0.2 起,__FILE__ 總是包含一個絕對路徑,而在此之前的版本有時會包含一個相對路徑。
__FUNCTION__ 函數名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
__CLASS__ 類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
__METHOD__ 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫比如當前文件是放在(d:\www\)下,文件名是test.php。
測試的代碼如下:
<?php echo __FILE__ ; // 取得當前文件的絕對地址,結果:D:\www\test.php echo dirname(__FILE__); // 取得當前文件所在的絕對目錄,結果:D:\www\ echo dirname(dirname(__FILE__)); //取得當前文件的上一層目錄名,結果:D:\ ?>
使用方法提示,
dirname(__FILE__) 取到的是當前文件的絕對路徑,也就是說,比起相對路徑,查找速度是最快的。
如果重復一次可以把目錄往上提升一個層次:
比如:$d = dirname(dirname(__FILE__));
其實就是把一個目錄給dirname()做參數了.因為dirname()返回最后的目錄不帶\\或者是/
所以重復使用的時候可以認為 dirname() 把最下層的目錄當成文件名來處理了.照常返回
當前目錄的上級目錄.這樣重復就得到了它的上一級的目錄.
包含得到上一級目錄的文件
include(dirname(__FILE__).'/../filename.php');
__FILE__的路徑是當前代碼所在文件
dirname(dirname(__FILE__));得到的是文件上一層目錄名
dirname(__FILE__);得到的是文件所在層目錄名
如下圖: