PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 的區別
阿新 • • 發佈:2018-07-16
name 的區別 rip www 出現 輸出 web 情況 lena
通常情況下,PHP $_SERVER[‘SCRIPT_FILENAME‘] 與 __FILE__ 都會返回 PHP 文件的完整路徑(絕對路徑)與文件名:
<?php
echo ‘SCRIPT_FILENAME 為:‘,$_SERVER[‘SCRIPT_FILENAME‘];
echo ‘<br />‘;
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 :
<?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__ 反映的是原始文件(被包含文件)的絕對路徑及文件名。
可以這樣理解,$_SERVER[‘SCRIPT_FILENAME‘] 為不管在哪個文件中寫的,只輸出執行文件的絕對路徑及文件名
__FILE__寫在哪個文件,輸出哪個文件的絕對路徑和文件名。
轉載:https://blog.csdn.net/cxfdg/article/details/53402477
PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 的區別