,則不會包含相關文件,但我沒有發現任何與此問題相關的帖子。 。我很抱歉,如果我錯過了相關的。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