2013-07-13 182 views
0

雖然這已經被問了一千次,我仍設法搞砸,而不是找到負責我的問題的答案..PHP包含路徑問題

我有2個文件

C:\xampp\htdocs\MF\Pages\ads.php 
C:\xampp\htdocs\MF\Pages\ads_view.php 

我想包括ads_viewads我做的是

echo __DIR__; 
var_dump(file_exists('ads_view.php')); 

和我所得到的是

C:\xampp\htdocs\MF\Pages 
bool(false) 

爲什麼我不能包含這個文件,當__DIR__明確說明我在父文件夾? ads.php也包含在其他文件中,如果這有什麼區別?

回答

1

請把完整路徑,它應該工作

var_dump(file_exists('C:\xampp\htdocs\MF\Pages\ads_view.php')); 

看到documentation爲file_exists

1

您也可以使用DOCUMENT_ROOT變量$ _ SERVER的便攜性。

var_dump(file_exists($_SERVER['DOCUMENT_ROOT'] . '\MF\Pages\ads_view.php'));

include $_SERVER['DOCUMENT_ROOT'] . '\MF\Pages\ads_view.php';

+0

它實際上是奇怪,因爲'include'工作得很好,相對路徑,但'file_exists'不>。< –

+0

那是因爲,像梅達說,fil_exists期望文件的完整路徑,而include也適用於當前目錄和相對路徑(如../../等)。但我喜歡使用document_root,所以我可以將代碼複製到其他目錄中的其他文件而不更改路徑。一個「C:\路徑...」等工作,但如果我複製到另一個網站的代碼將停止工作。 – Rik

+0

您可以簡單地使用'__DIR__'而不是文檔根目錄 –