天天看點

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

PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__

通常情況下,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__ 反映的是原始檔案(被包含檔案)的絕對路徑及檔案名。

http://www.5idev.com/p-php_server_script_filename__file__.shtml

php