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


PHP and paths - relative to file and not including code

我真的很困惑PHP和路径系统。

我有这样的结构:

- Includes
- Login
- View
   * Secure

这些都是我网站上的目录。现在,如果我将文件放在"View"文件夹中,我可以使用:

来访问我的Includes文件夹中的文件
"../Includes/file.php"

如果我想包含来自安全目录的相同文件,我会这样做:

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

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

如果我尝试导入的文件(include目录中的file.php)也包含一个文件,它将抛出所有内容。假设该文件将包含一个文件在"登录",它必须是这两个包括之一,所有取决于包含它的代码是否在安全或视图目录:

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

显然这个问题只会越来越严重。也许我之后,是一种方式,有路径相对于文件本身,而不是包括代码?

另一个注意事项,我想我真正想要的是如何处理所有这些包括"地狱"在PHP?我觉得我把我的结构紧紧地绑在一起,我不能改变太多,否则一切都会破裂。因此,任何关于如何处理这个问题的建议都是非常感谢的。

有两种路径:相对路径和绝对路径。绝对路径以/..(或C:/..或其他Windows上的路径)开头,并且始终明确指向一个特定的文件。

相对路径(不以/开头)是相对于include_path变量的。这是一个包含一系列文件夹的变量,PHP将在其中查找相对路径。include_path还包括.,即当前目录。"当前"目录取决于哪个文件是"第一个"要执行的。因此,它取决于哪个文件开始include其他文件。

  1. 你可以设置你的include_path到一些特定的,不变的目录,所以你总是有一个固定的路径包含到相对。
  2. 更好: 构建绝对路径:

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