【问题标题】:Why ./ is not being recognized as current directory in my php file?为什么 ./ 在我的 php 文件中没有被识别为当前目录?
【发布时间】:2017-09-02 00:01:59
【问题描述】:

我有以下文件层次结构:

并且 require_once 不知何故无法工作(警告:require_once(./AutentificadorJWT.php):无法打开流:第 2 行的 C:\xampp\htdocs\clases\usuario.php 中没有此类文件或目录) 据我所知 ./ 指向当前目录。现在以下工作: require_once 'AuthentificadorJWT.php'; 为什么 ./ 不起作用?

【问题讨论】:

  • 已经在这里解释过stackoverflow.com/questions/579374/…
  • 如果./表示当前目录,为什么需要'./AutentificadorJWT.php';不工作?
  • 您正在运行的主脚本文件是 index.php 并且行 require_once(./AutentificadorJWT.php): 正在另一个文件中调用,该文件位于子文件夹“class”中,对于 php 当前目录是"htdocs" 作为 index.php 是当前正在运行的脚本文件。
  • 我明白了,所以相对路径实际上不是使用 usuario.php 作为参考文件,而是使用 index.php。我认为不应该这样,因为它使相对路径的想法变得无用。你不觉得吗?相对路径的主要好处应该是相对于您使用它的文件,而不是“相对”于固定目录或位置。
  • 相对于进程的当前目录。当 PHP 脚本启动时,当前目录设置为脚本所在的位置,但不会在每次进出包含文件时更改。

标签: php filepath


【解决方案1】:

当您拥有复杂的代码层次结构时,可能很难知道当前目录是哪个目录。如果您想有一个恒定的参考点,那么您可以使用$_SERVER['DOCUMENT_ROOT'],它定义了您计算机上代码的基础。所以...

require_once $_SERVER['DOCUMENT_ROOT'].'/base.php';

适用于项目根目录中的 base.php。我遇到的一个问题是单元测试并不总是有很多 $_SERVER 变量集。

或者,您可以使用__DIR__,它是当前文件的目录。因此,如果您将其更改为 ...

require_once __DIR__.'/AuthentifacdorJWT.php';

这将始终与您使用的文件的目录相关。

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 2019-12-12
    • 2021-02-22
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多