PHP获取文件路径getcwd()、__DIR__、__FILE__的区别

getcwd()

getcwd() 是一个函数,它返回当前工作目录(CWD)的完整路径。当前工作目录是脚本开始执行时所在的目录,除非在脚本执行过程中通过 chdir() 函数进行了更改。

$cwd = getcwd();  
echo $cwd; // 输出当前工作目录的完整路径

__DIR__

__DIR__ 是一个魔术常量,它返回当前文件所在的目录的完整路径(不包括文件名)。这个路径在文件被解析时就已经确定,并且之后不会改变,无论当前工作目录如何变化。

echo __DIR__; // 输出当前文件所在目录的完整路径

__FILE__

__FILE__ 是另一个魔术常量,它返回当前文件的完整路径和文件名。这个路径也是在文件被解析时确定的,之后同样不会改变。

echo __FILE__; // 输出当前文件的完整路径和文件名

区别

  • getcwd()
    • 返回当前工作目录的路径。
    • 可以通过 chdir() 函数在脚本执行过程中更改。
    • 与脚本的起始目录相关,而不是文件本身。
  • __DIR__
    • 返回当前文件所在的目录的路径。
    • 路径在文件被解析时确定,之后不会改变。
    • 与文件本身的位置相关。
  • __FILE__
    • 返回当前文件的完整路径和文件名。
    • 路径在文件被解析时确定,之后不会改变。
    • 与文件本身的位置相关。

示例

假设你有以下的文件结构:

/project/  
    /includes/  
        helper.php  
    main.php

在 main.php 中,如果当前工作目录是 /project/,你可以得到以下输出:

// main.php  
echo getcwd(); // 输出: /project/  
echo __DIR__; // 输出: /project/  
echo __FILE__; // 输出: /project/main.php  
  
chdir('includes'); // 更改当前工作目录为 /project/includes/  
echo getcwd(); // 输出: /project/includes/  
echo __DIR__; // 输出: /project/ (仍然不变)  
echo __FILE__; // 输出: /project/main.php (仍然不变)

在 helper.php 中,你会得到不同的输出:

// includes/helper.php  
echo getcwd(); // 输出可能与 main.php 中的相同,也可能是其他目录(取决于如何包含 helper.php)  
echo __DIR__; // 输出: /project/includes/  
echo __FILE__; // 输出: /project/includes/helper.php

注意getcwd() 的输出可能因 chdir() 的调用或包含文件的上下文而异,而 __DIR__ 和 __FILE__ 则总是返回包含它们的文件的路径。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值