dirname(__FILE__) 取到的是當前文件的絕對路徑,也就是說,比起相對路徑,查找速度是最快的。php
PHP 常量 dirname(__file__)
__FILE__ :被稱爲PHP魔術常量 ,返回當前執行PHP腳本的完整路徑和文件名,包含一個絕對路徑web
1)dirname(__FILE__) 函數返回的是腳本所在在的路徑。app
好比文件 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__) 通常會返回文件所的當前目錄到系統根目錄的一個目錄結構。ui
不會返回當前的文件名稱。 dirname(__FILE__) 也可能返回一個 . (當前目錄) [緣由是 b.php 文件在 http.conf 或者 PHP 配置開發環境的默認WEB目錄下
幾個 PHP 的「魔術常量」spa
名稱 說明
__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。
測試的代碼以下:code
<?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__);獲得的是文件所在層目錄名server
以下圖:blog