發現網上找了很多文章都是錯誤的,特別驗證后發出來:
dirname(__FILE__)
php中定義了一個很有用的常數,即:__file__
這個內定常數是所在php程序文件的完整路徑(路徑+文件名)。
即使這個文件被其他文件引用(include或require),__file__始終是它所在文件的完整路徑,而不是引用它的那個文件完整路徑。
請看下面例子:
F:\Modoer_2.6_SC_UTF8\upload\test\a.php
<?php
$the_full_name=__FILE__;
$the_dir=dirname(__FILE__);
echo $the_full_name; //返回:F:\Modoer_2.6_SC_UTF8\upload\test\a.php
echo $the_dir; //返回:F:\Modoer_2.6_SC_UTF8\upload\test
?>
F:\Modoer_2.6_SC_UTF8\upload\b.php
<?php
include "test/a.php";//返回:F:\Modoer_2.6_SC_UTF8\upload\test\a.phpF:\Modoer_2.6_SC_UTF8\upload\test
echo $the_full_name; //返回:F:\Modoer_2.6_SC_UTF8\upload\test\a.php
echo $the_dir; //返回:F:\Modoer_2.6_SC_UTF8\upload\test
?>
簡單地說:
__FILE__ 返回其所在文件的路徑+文件名
dirname(__FILE__) 返回__FILE__所在文件的路徑部分
dirname(dirname(__FILE__));得到的是__FILE__所在文件的上一層目錄名(不含最后一個“\”號)
例如,當前文件是 F:\Modoer_2.6_SC_UTF8\upload\test\a.php,則
__FILE__ 得到的就是完整路徑 即 F:\Modoer_2.6_SC_UTF8\upload\test\a.php ,而
dirname(__FILE__)得到路徑部分 即 F:\Modoer_2.6_SC_UTF8\upload\test
dirname(dirname(__FILE__)),即:F:\Modoer_2.6_SC_UTF8\upload