__FILE__与__DIR__与 getcwd()与$_SERVER['SCRIPT_FILENAME']之间的区别

要获取当前php脚本所在目录的绝对路径,可以下面通过四个方法:
1、 __FILE__
2、 __DIR__
3、getcwd()
4、$_SERVER[‘SCRIPT_FILENAME’]
下面通过实例来说明之间的区别:
脚本路径:D:\Soft\xampp\htdocs\test\test.php,代码如下:

<?php
//PHP获取绝对路径方法比较
//__FILE__ vs __DIR__ vs getcwd() vs $_SERVER['SCRIPT_FILENAME']

echo '===============当前执行脚本=================<br/>';

$a = __FILE__;
$b = __DIR__;
$c = getcwd();
$d = $_SERVER['SCRIPT_FILENAME'];

echo '__FILE__='.$a.'<br/>';
echo '__DIR__='.$b.'<br/>';
echo 'getcwd()='.$c.'<br/>';
echo '$_SERVER["SCRIPT_FILENAME"]='.$d.'<br/>';

echo '===============被包含文件===================<br/>';

include 'include/inc.php';

?>

脚本路径:D:\Soft\xampp\htdocs\test\include\inc.php,代码如下:

<?php
//PHP获取绝对路径方法比较
//__FILE__ vs __DIR__ vs getcwd() vs $_SERVER['SCRIPT_FILENAME']

$a = __FILE__;
$b = __DIR__;
$c = getcwd();
$d = $_SERVER['SCRIPT_FILENAME'];

echo '__FILE__='.$a.'<br/>';
echo '__DIR__='.$b.'<br/>';
echo 'getcwd()='.$c.'<br/>';
echo '$_SERVER["SCRIPT_FILENAME"]='.$d;

?>

运行结果如下:

===============当前执行脚本=================
__FILE__=D:\Soft\xampp\htdocs\test\test.php
__DIR__=D:\Soft\xampp\htdocs\test
getcwd()=D:\Soft\xampp\htdocs\test
$_SERVER["SCRIPT_FILENAME"]=D:/Soft/xampp/htdocs/test/test.php
===============被包含文件===================
__FILE__=D:\Soft\xampp\htdocs\test\include\inc.php
__DIR__=D:\Soft\xampp\htdocs\test\include
getcwd()=D:\Soft\xampp\htdocs\test
$_SERVER["SCRIPT_FILENAME"]=D:/Soft/xampp/htdocs/test/test.php
复制代码

结论:
getcwd()获取的是当前运行脚本的目录,不管getcwd()是在被包含的文件里面还是在当前执行脚本文件里面,运行的结果不会发生任何变化。
__FILE__获取的是文件名称,如果用在被包含文件中,则返回被包含的文件名,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称。
__DIR__获取的是文件名称目录,如果用在被包含文件中,则返回被包含的文件名目录,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称目录。

$_SERVER[‘SCRIPT_FILENAME’]获取的是当前运行脚本名称,不管$_SERVER[‘SCRIPT_FILENAME’]是在被包含的文件里面还是在当前执行脚本文件里面,运行的结果不会发生任何变化。

区别:
dirname($_SERVER[‘SCRIPT_FILENAME’])与getcwd()效果一样,是获取当前运行脚本的目录。

dirname(__FILE__)与__DIR__效果一样,获取的是文件名称目录,如果用在被包含文件中,则返回被包含的文件名目录,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称目录。__DIR__是php5.3.0之后新增的,dirname与__FILE__是php4.0.2开始启用,效率上来说__DIR__比dirname(__FILE__)更高,如果php版本是5.3以上的,建议使用__DIR__,否则还是使用dirname(__FILE__)合适,避免程序出错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值