PHP和路径 - 相对于文件而不包括代码

时间:2015-06-05 12:15:08

标签: php

我对PHP和路径系统感到很困惑。

我有这个结构:

"../Includes/file.php"

这些是我网站上的所有目录。现在,如果我将文件放在“查看”文件夹中,我可以访问我的包含文件夹中的文件:

"../../Includes/file.php"

如果我想要从Secure目录中包含相同的文件,我会这样做:

"../Login/file.php" -> if it was included from the View directory
"../../Login/file.php" -> if it was included from the Secure directory.

这一切都很好,但这里对我来说很棘手。

如果我尝试导入的文件(Includes目录中的file.php)还包含一个文件,它将抛弃所有内容。假设该文件将包含“登录”中的文件,它必须是这两个包含中的一个,所有这些都取决于包含它的代码是在Secure或View目录中:

iFrame

显然这个问题只会越来越糟。也许我所追求的是一种让路径相对于FILE本身的方式,而不是包含代码?

另一方面,我猜我真正追求的是如何处理所有这些包括PHP中的“地狱”?我觉得我把我的结构紧紧地绑在一起,如果没有一切破坏,我就无法改变。因此,非常感谢任何有关如何处理此问题的建议。

1 个答案:

答案 0 :(得分:1)

有两种类型的路径:relative和absolute。绝对路径以/..(或C:/..或者在Windows上有效)开头,并且始终明确指向一个特定文件。

相对路径(不以/开头)与include_path变量相关。这是一个包含大量文件夹的变量,PHP将查找您的相对路径。 include_path还包含.当前目录。 “当前”目录取决于哪个文件是“第一个”要执行的。因此,它取决于哪个文件开始include其他文件。

  1. 您可以set your include_path到某个特定的,不变的目录,这样您就可以有一个固定的路径来相对包含。
  2. 更好: 构建绝对路径:

    include __DIR__ . '/../Login/file.php';
    

    这始终是相对于文件所在的目录。