今天碰到了PHP的常量__FILE__的問題了。
在網上查了一下。總結了以下規律。
dirname(__FILE___) 函數返回的是腳本所在在的路徑。
比如文件 b.php 包含如下內容:
1 <?php 2 $basedir = dirname(__FILE__); 3 ?>
如果b.php被其他目錄裡的a.php文件require 或者 include 去引用的話。
變量$basedir 的內容還是b.php所在的那個文件夾的路徑。
而不是變成a.php文件所在的目錄。
dirname(__FILE__) 一般會返回文件所的當前目錄到系統根目錄的一個目錄結構。
不會返回當前的文件名稱。
dirname(__FILE__) 也可能返回一個 . (當前目錄)
[原因是 b.php 文件在 http.conf 或者 PHP 配置開發環境的默認WEB目錄下.
比如 WEB_ROOT 為: "C:/root/www/".]
b.php文件路徑為: "C:/root/www/b.php".
使用方法提示,
如果重復一次可以把目錄往上提升一個層次:
比如:$d = dirname(dirname(__FILE__));
其實就是把一個目錄給dirname()做參數了.因為dirname()返回最後的目錄不帶\\或者是/
所以重復使用的時候可以認為 dirname() 把最下層的目錄當成文件名來處理了.照常返回當前目錄的上級目錄.
這樣重復就得到了它的上一級的目錄.
包含得到上一級目錄的文件
include(dirname(__FILE__).'/../filename.php');