我对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中的“地狱”?我觉得我把我的结构紧紧地绑在一起,如果没有一切破坏,我就无法改变。因此,非常感谢任何有关如何处理此问题的建议。
答案 0 :(得分:1)
有两种类型的路径:relative和absolute。绝对路径以/..
(或C:/..
或者在Windows上有效)开头,并且始终明确指向一个特定文件。
相对路径(不以/
开头)与include_path
变量相关。这是一个包含大量文件夹的变量,PHP将查找您的相对路径。 include_path
还包含.
,当前目录。 “当前”目录取决于哪个文件是“第一个”要执行的。因此,它取决于哪个文件开始include
其他文件。
include_path
到某个特定的,不变的目录,这样您就可以有一个固定的路径来相对包含。更好: 构建绝对路径:
include __DIR__ . '/../Login/file.php';
这始终是相对于文件所在的目录。