我有這樣的目錄樹:PHP包括文件,其中包含一個文件了目錄樹
test.php
foodir
`---- foo.php
bardir
`---- bar.php
當我打開test.php的,包括我foo.php。然後,我想讓foo.php包含bar.php。
test.php的:
include 'foodir/foo.php';
foo.php:
include '../bardir/bar.php';
然而,當我打開test.php的,我得到:
警告:包括(.. /bardir/bar.php):未能打開流:沒有這樣的文件或目錄
我注意到,如果我改變我的目錄樹:
test.php
foodir
`---- foo.php
---- bardir
`---- bar.php
,然後更改foo.php到:
include 'bardir/bar.php';
一切正常。看起來我可以包含與當前包含文件相關的文件。
然而,爲什麼我無法前往了該文件的目錄樹?
編輯:
我知道,我可以把include 'bardir/bar.php'
在foo.php。它會在test.php的位置搜索bar.php。但是,如果我將文件中的foo.php包含在test.php所在目錄以外的目錄中,那麼這並不能解決我的問題。這是因爲在其他目錄中,bardir/bar.php
不存在。
我不知道爲什麼。我有同樣的問題一次又一次。我解決了只包含魔術常量'__DIR__'的問題。我認爲問題在於'$ SERVER ['WEB_ROOT']'這可能是每個包含文件的起始點。 – Sysix
包括與包含它們的文件的文件夾無關,而是與包含在php.ini配置文件,以及(通常是因爲該路徑列表中的第一個條目是「。」)當前工作目錄(通常是正在執行的主腳本的文件夾) –