包含具有相对路径的奇怪行为

时间:2018-09-04 06:37:05

标签: php

在我的php项目中,我尝试包含另一个文件。但是,我发现include语句的工作原理令人困惑。

例如 我在index.php中包含了HelperFile.php文件。这两个文件都在同一目录中。

这有效:include 'HelperFile.php',但include '/HelpferFile.php'include './HelpferFile.php'不是

我收到的警告:

  

PHP警告include(/HelperFile.php):无法打开流

出于好奇,我创建了一个文件夹并将文件HelperFile.php移入其中,但没有任何更改。每当我尝试将相对路径与./..//一起使用时,都会收到警告。

有人可以告诉我发生了什么事吗?我仍在学习,无法弄清楚现在正在发生什么。

2 个答案:

答案 0 :(得分:1)

PHP相对路径不是很好,它通常更喜欢绝对路径。解决此问题的最简单方法是使用 DIR 魔术常数,该常数将返回您当前所在文件的当前目录。

因此,例如,您可以执行include(__DIR__ . '/HelperFile.php');,该操作将在当前目录中。

但是说您可以在文件夹中保存文件
include(__DIR__ . '/../MyOtherFile.php');

答案 1 :(得分:0)

PHP Doc says

  

如果定义了路径-是否绝对(以驱动器号开头   或\(在Windows上或/在Unix / Linux系统上)或相对于   当前目录(以。或..开头)-include_path将为   完全忽略了。例如,如果文件名以../开头,则   解析器将在父目录中查找所需的文件。

如果您使用...将被忽略作为相对路径,也将../用于父目录。