1. 程式人生 > >PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 的區別

PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 的區別

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__ 的區別