我真的很困惑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
其他文件。
- 你可以设置你的
include_path
到一些特定的,不变的目录,所以你总是有一个固定的路径包含到相对。 -
更好: 构建绝对路径:
include __DIR__ . '/../Login/file.php';