php dirname(__FILE__) 獲取當(dāng)前文件的絕對(duì)路徑
PHP 常量 dirname(__file__)
__FILE__ :被稱(chēng)為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)前的文件名稱(chēng)。 dirname(__FILE__) 也可能返回一個(gè) . (當(dāng)前目錄) [原因是 b.php 文件在 http.conf 或者 PHP 配置開(kāi)發(fā)環(huán)境的默認(rèn)WEB目錄下
幾個(gè) PHP 的“魔術(shù)常量”
名稱(chēng) 說(shuō)明
__LINE__ 文件中的當(dāng)前行號(hào)。
__FILE__ 文件的完整路徑和文件名。如果用在包含文件中,則返回包含文件名。自 PHP 4.0.2 起,__FILE__ 總是包含一個(gè)絕對(duì)路徑,而在此之前的版本有時(shí)會(huì)包含一個(gè)相對(duì)路徑。
__FUNCTION__ 函數(shù)名稱(chēng)(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數(shù)被定義時(shí)的名字(區(qū)分大小寫(xiě))。在 PHP 4 中該值總是小寫(xiě)字母的。
__CLASS__ 類(lèi)的名稱(chēng)(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類(lèi)被定義時(shí)的名字(區(qū)分大小寫(xiě))。在 PHP 4 中該值總是小寫(xiě)字母的。
__METHOD__ 類(lèi)的方法名(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 str_replace替換指定次數(shù)的方法詳解
本篇文章主要介紹了php str_replace替換指定次數(shù)的方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-05-05
PHP郵件發(fā)送類(lèi)PHPMailer用法實(shí)例詳解
這篇文章主要介紹了PHP郵件發(fā)送類(lèi)PHPMailer用法,詳細(xì)的講述了安裝及配置的方法與功能實(shí)現(xiàn)代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-09-09
php生成4位數(shù)字驗(yàn)證碼的實(shí)現(xiàn)代碼
這篇文章主要介紹了php數(shù)字驗(yàn)證碼的實(shí)現(xiàn)代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2015-11-11
PHP將二維數(shù)組某一個(gè)字段相同的數(shù)組合并起來(lái)的方法
這篇文章主要介紹了PHP將二維數(shù)組某一個(gè)字段相同的數(shù)組合并起來(lái)的方法,涉及PHP多維數(shù)組操作的相關(guān)技巧,需要的朋友可以參考下2016-02-02
PHP+SQL 注入攻擊的技術(shù)實(shí)現(xiàn)以及預(yù)防辦法
最近在折騰 PHP + MYSQL 的編程。了解了一些 PHP SQL 注入攻擊的知識(shí),總結(jié)一下經(jīng)驗(yàn)。在我看來(lái),引發(fā) SQL 注入攻擊的主要原因,是因?yàn)橐韵聝牲c(diǎn)原因2011-01-01
PHP錯(cuò)誤和異長(zhǎng)常處理總結(jié)
PHP提供了錯(cuò)誤處理和日志記錄的功能. 這些函數(shù)允許你定義自己的錯(cuò)誤處理規(guī)則,以及修改錯(cuò)誤記錄的方式. 這樣,你就可以根據(jù)自己的需要,來(lái)更改和加強(qiáng)錯(cuò)誤輸出信息以滿足實(shí)際需要2014-03-03
PHP實(shí)現(xiàn)Redis分布式鎖的示例代碼
并發(fā)寫(xiě)入問(wèn)題可能導(dǎo)致數(shù)據(jù)不一致或重復(fù)寫(xiě)入,為了解決這個(gè)問(wèn)題,我們可以使用Redis實(shí)現(xiàn)分布式鎖,本文主要為大家介紹了PHP實(shí)現(xiàn)Redis分布式鎖的相關(guān)知識(shí),希望對(duì)大家有所幫助2023-12-12
PHP實(shí)現(xiàn)統(tǒng)計(jì)代碼行數(shù)小工具
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)統(tǒng)計(jì)代碼行數(shù)小工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
PHP基于非遞歸算法實(shí)現(xiàn)先序、中序及后序遍歷二叉樹(shù)操作示例
這篇文章主要介紹了PHP基于非遞歸算法實(shí)現(xiàn)先序、中序及后序遍歷二叉樹(shù)操作,結(jié)合實(shí)例形式分析了php采用非遞歸算法對(duì)二叉樹(shù)進(jìn)行先序、中序及后序遍歷操作的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01

