,则不会包含相关文件,但我没有发现任何与此问题相关的帖子。 。我很抱歉,如果我错过了相关的。PHP将包含一个与调用脚本相关的文件,但如果包含路径包含“../”
从我从PHP的文档,并在这里从其他职位收集,PHP的包括(和include_once)执行以下操作:
文件包含基础,给予或者如果没有给出文件路径中,指定include_path。如果在include_path没有找到文件,包括将在调用脚本本身的目录和当前工作目录没有
,最后才选中我有一个给定的目录结构如下:
- 的index.php
- /DIRA(包含a.php只会和b.php)
- /DIRB(包含c.php)
从索引。 PHP include_once "dirA/a.php"
下面是a.php只会内是什么在起作用: include_once "b.php"
include_once "../dirB/c.php"
的奇怪的事情: include_once "b.php"
include_once "dirB/c.php"
下面是从a.php只会内没有按“T工作对我来说,b.php是相对于“调用脚本自己的目录”而被包含的,但是c.php仅被认为是相对于当前工作d irectory(这是包含index.php的dir)。这似乎与我略有不一致。 PHP将包含一个相对于调用脚本的文件,但如果包含路径包含../
,则不会 - 为什么? 为什么../
父目录指令不是相对于调用脚本工作,而是相对于当前工作目录?(注:我测试了它相对于CWD,但不包括在我的例子,上面的文件,只是为了保持其清洁它的工作就好了。)
任何人都可以提供一些线索来这是为什么? 应该它以这种方式工作,或者这是一个错误?
Eh。 PHP有时候很奇怪。我通常只是将应用程序的根添加到'include_path'并指定相关的所有内容。从长远来看,它可以减少混淆,同时不会牺牲四处移动的能力。 – cHao 2013-03-16 20:38:11
看起来好像你的评论可能和我打算在这个上面一样。如果你让它成为答案,我会接受它... – 2013-03-17 23:45:28