您的位置:首页 > 教育 > 锐评 > PHP获取文件路径getcwd()、__DIR__、__FILE__的区别

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

2024/10/5 14:32:07 来源:https://blog.csdn.net/liuxl57805678/article/details/139114099  浏览:    关键词: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__ 则总是返回包含它们的文件的路径。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com