PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__
通常情況下,PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 都會返回 PHP 文件的完整路徑(絕對路徑)與文件名:
echo 'SCRIPT_FILENAME 為:',$_SERVER['SCRIPT_FILENAME'];
echo '
';
echo '__FILE__ 為:',__FILE__;
?>
上述測試代碼拷貝至 test.php 并訪問該文件(http://127.0.0.1/php/test.php),得到如下結果:
SCRIPT_FILENAME 為:E:/web/html/php/test.php
__FILE__ 為:E:\web\html\php\test.php
提示:在 windows 平臺測試,得到結果如上所示可能會出現路徑分隔符的細微差別。
$_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 區別
盡管 $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 非常相似,但在文件被 include 或 require 包含的時候,二者還是有細微區別。
將上述測試代碼拷貝至 E:\web\html\php\common\inc.php ,然后在剛才的 test.php 文件內包含 inc.php :
include 'common/inc.php';
?>
這時候再訪問 test.php 文件時,輸出結果:
SCRIPT_FILENAME 為:E:/web/html/php/test.php
__FILE__ 為:E:\web\html\php\common\test.php
可見二者的差別是:$_SERVER['SCRIPT_FILENAME'] 反映的是當前執行程序的絕對路徑及文件名;__FILE__ 反映的是原始文件(被包含文件)的絕對路徑及文件名。