PHP中__FILE__ 和 $_SERVER["SCRIPT_FILENAME"] 有何不同

来源:百度知道 编辑:UC知道 时间:2024/09/21 07:55:35
__FILE__ 和 $_SERVER["SCRIPT_FILENAME"] 有何不同

做个试验你就理解了

假设apache的web根目录是 d:/web
先建立 d:/web/wr1.php
内容是:
<?php
require 'abc/wr2.php';
?>

再建立 d:/web/abc/wr2.php
内容是:
<?php
echo $_SERVER["SCRIPT_FILENAME"];
echo '<br>';
echo __FILE__;
?>

然后你访问 http://127.0.0.1/wr1.php 看看输出就知道了

应该是输出:

d:/web/wr1.php
D:\web\abc\wr2.php

不会手册都懒得查吧... ...
SCRIPT_FILENAME
当前执行脚本的绝对路径名。

Note: 如果脚本在 CLI 中被执行,作为相对路径,例如 file.php 或 ../file.php,$_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。

__FILE__
文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

最佳答案说的结果是正确的,但是还漏了一点,$_SERVER['SCRIPT_FILENAME']得到的其实是相对路径,而__FILE__得到的则是绝对路径。
example:有一个文件 dir/file.php 使用php.exe dir/file.php执行文件,得到的$_SERVER['SCRIPT_FILENAME&#