php dirname(__FILE__) 獲取當(dāng)前文件的絕對(duì)路徑
PHP 常量 dirname(__file__)
__FILE__ :被稱為PHP魔術(shù)常量 ,返回當(dāng)前執(zhí)行PHP腳本的完整路徑和文件名,包含一個(gè)絕對(duì)路徑
1)dirname(__FILE__) 函數(shù)返回的是腳本所在在的路徑。
比如文件 b.php 包含如下內(nèi)容:
<?php $basedir = dirname(__FILE__); echo $basedir //將在頁(yè)面打印出一個(gè)這個(gè)文件所在絕對(duì)路徑! ?>
我做的測(cè)試得到結(jié)果: E:/website/othertest/cms
這個(gè)相當(dāng)于, asp中的server.mappth的用法
如果b.php被其他目錄里的a.php文件require 或者 include 去引用的話。 變量$basedir 的內(nèi)容還是b.php所在的那個(gè)文件夾的路徑。 而不是變成a.php文件所在的目錄。
2)dirname(__FILE__) 一般會(huì)返回文件所的當(dāng)前目錄到系統(tǒng)根目錄的一個(gè)目錄結(jié)構(gòu)。
不會(huì)返回當(dāng)前的文件名稱。 dirname(__FILE__) 也可能返回一個(gè) . (當(dāng)前目錄) [原因是 b.php 文件在 http.conf 或者 PHP 配置開(kāi)發(fā)環(huán)境的默認(rèn)WEB目錄下
幾個(gè) PHP 的“魔術(shù)常量”
名稱 說(shuō)明
__LINE__ 文件中的當(dāng)前行號(hào)。
__FILE__ 文件的完整路徑和文件名。如果用在包含文件中,則返回包含文件名。自 PHP 4.0.2 起,__FILE__ 總是包含一個(gè)絕對(duì)路徑,而在此之前的版本有時(shí)會(huì)包含一個(gè)相對(duì)路徑。
__FUNCTION__ 函數(shù)名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數(shù)被定義時(shí)的名字(區(qū)分大小寫(xiě))。在 PHP 4 中該值總是小寫(xiě)字母的。
__CLASS__ 類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時(shí)的名字(區(qū)分大小寫(xiě))。在 PHP 4 中該值總是小寫(xiě)字母的。
__METHOD__ 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時(shí)的名字(區(qū)分大小寫(xiě)比如當(dāng)前文件是放在(d:\www\)下,文件名是test.php。
測(cè)試的代碼如下:
<?php echo __FILE__ ; // 取得當(dāng)前文件的絕對(duì)地址,結(jié)果:D:\www\test.php echo dirname(__FILE__); // 取得當(dāng)前文件所在的絕對(duì)目錄,結(jié)果:D:\www\ echo dirname(dirname(__FILE__)); //取得當(dāng)前文件的上一層目錄名,結(jié)果:D:\ ?>
使用方法提示,
dirname(__FILE__) 取到的是當(dāng)前文件的絕對(duì)路徑,也就是說(shuō),比起相對(duì)路徑,查找速度是最快的。
如果重復(fù)一次可以把目錄往上提升一個(gè)層次:
比如:$d = dirname(dirname(__FILE__));
其實(shí)就是把一個(gè)目錄給dirname()做參數(shù)了.因?yàn)閐irname()返回最后的目錄不帶\\或者是/
所以重復(fù)使用的時(shí)候可以認(rèn)為 dirname() 把最下層的目錄當(dāng)成文件名來(lái)處理了.照常返回
當(dāng)前目錄的上級(jí)目錄.這樣重復(fù)就得到了它的上一級(jí)的目錄.
包含得到上一級(jí)目錄的文件
include(dirname(__FILE__).'/../filename.php');
__FILE__的路徑是當(dāng)前代碼所在文件
dirname(dirname(__FILE__));得到的是文件上一層目錄名
dirname(__FILE__);得到的是文件所在層目錄名
相關(guān)文章
PHP實(shí)現(xiàn)識(shí)別復(fù)雜pdf文檔的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用PHP實(shí)現(xiàn)識(shí)別復(fù)雜pdf文檔的功能,文中的示例代碼講解詳細(xì),感興趣的徐海波可以跟隨小編一起學(xué)習(xí)一下2024-01-01PHP實(shí)現(xiàn)時(shí)間比較和時(shí)間差計(jì)算的方法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)時(shí)間比較和時(shí)間差計(jì)算的方法,涉及php日期與時(shí)間的轉(zhuǎn)換、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07php結(jié)合web uploader插件實(shí)現(xiàn)分片上傳文件
這篇文章主要為大家詳細(xì)介紹了php結(jié)合web uploader插件實(shí)現(xiàn)分片上傳文件, 采用大文件分片并發(fā)上傳,極大的提高了文件上傳效率,感興趣的小伙伴們可以參考一下2016-05-05PHP頁(yè)面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法詳解
這篇文章主要介紹了PHP頁(yè)面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法,結(jié)合實(shí)例形式分析了PHP頁(yè)面靜態(tài)化——純靜態(tài)與偽靜態(tài)相關(guān)原理、實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-06-06使用JSON實(shí)現(xiàn)數(shù)據(jù)的跨域傳輸?shù)膒hp代碼
某網(wǎng)站后臺(tái)用php腳本得到一個(gè)JSON格式的數(shù)據(jù),交給前臺(tái)javascript進(jìn)行處理,使用JSON實(shí)現(xiàn)數(shù)據(jù)的跨域調(diào)用2011-12-12延長(zhǎng)phpmyadmin登錄時(shí)間的方法
新安裝的phpmyadmin默認(rèn)是cookie模式,如果閑置十幾分鐘不操作的話,就會(huì)要求重新登錄。2011-02-02PHP調(diào)用MySQL的存儲(chǔ)過(guò)程的實(shí)現(xiàn)代碼
MySQL好像從5.0開(kāi)始才引入存儲(chǔ)過(guò)程,反正以前做應(yīng)用的時(shí)候從沒(méi)碰過(guò),不過(guò)現(xiàn)在因?yàn)橹饕鲀?nèi)部系統(tǒng)2008-08-08