basename(__ FILE__)是否有区别?和$ _SERVER ['SCRIPT_NAME']?
我只是看到人们经常使用的2之一,和Im不确定的,如果它的事项要使用哪一个。我当然试过他们,他们似乎输出了同样的东西。就是想。 :)
basename(__ FILE__)是否有区别?和$ _SERVER ['SCRIPT_NAME']?
我只是看到人们经常使用的2之一,和Im不确定的,如果它的事项要使用哪一个。我当然试过他们,他们似乎输出了同样的东西。就是想。 :)
__FILE__ returns the filename of the script that is currently being run.
dirname returns the directory of a given filename
basename() returms the filename component of path. To put it better: it strips any "parent" directories off a given string.
$_SERVER['SCRIPT_NAME'] Returns the path of the current script
号两者都是same.They将返回同样的事情,但我认为$ _ SERVER [“SCRIPT_NAME”]是更好,因为它是小和PHP全局变量
是的,是有一定你需要考虑的重大差异。
一个用于获取包含脚本的完整路径(当前文件),另一个用于获取脚本路径(相对于Web服务器)。所以你可能会使用一个或另一个取决于你想要完成的事情。
所以它会在不同的格式返回不同的结果:
__FILE__
:C:\xampp\htdocs\project\myfileincluded.php
$_SERVER['SCRIPT_NAME']
:/project/index.php
__FILE__
是Magic constants的一部分,将返回的绝对路径目前包含文件。
$_SERVER['SCRIPT_NAME']
是Predefined server variables的一部分,它将返回最初在服务器中相对于服务器根路径调用的脚本的路径。
在记录消息或查看提取当前项目名称,分支名称等时,您可能想要使用__FILE__
。当您要刷新页面时,可能需要使用$_SERVER['SCRIPT_NAME']
,找出通话等。
在你的例子中,你正在使用basename(__FILE__)
,在这种情况下,将返回包含文件的名称。
__FILE__
返回此命令最初所在的脚本名称。
$_SERVER['SCRIPT_NAME']
返回调用此命令的脚本名称。例如,如果您有调用函数“ThisFile()”的“Script_A.php”,其中“ThisFile()”通过include_once在另一个“Script_B.php”中,则结果将会不同。
__FILE__
=>返回Script_B
$_SERVER['SCRIPT_NAME']
=>返回脚本A
不那么重要,但我认为这是值得注意的。请注意,也有$_SERVER['SCRIPT_FILENAME']
。
一个区别是他们返回包含的文件不同的路径:
__FILE__
返回路径包含文件(其中__FILE__
被调用)。$_SERVER['SCRIPT_FILENAME']
返回正在执行的脚本的路径(顶级脚本)。但是,在基于Linux的系统和Apache web服务器上也可能存在差异,其中DocumentRoot
是通过符号链接路径定义的。
对于我的网站例如真实路径是:
/mnt/data/www/mysite.org/
还有一个目录/www/
其中位于此符号链接:
mysite.org
指向/mnt/data/www/mysite.org/
。
然后DocumentRoot
(Apache的虚拟主机定义)配置为符号链接路径/www/mysite.org
。
在一些PHP脚本根本index.php
设置:
__FILE__
包含/mnt/data/www/mysite.org/index.php
- 真实路径$_SERVER['SCRIPT_FILENAME']
包含/www/mysite.org/index.php
- 符号链接路径