2011-11-18 30 views
2

所以我試圖在PHP中包含一些文件,它不起作用。將它包含在PHP中後找不到文件

我正在編寫的文件位於主目錄中。主目錄中有一個子目錄「D1」,在D1中有另一個目錄「D2」。

D2內有一堆文件。我寫了一個類文件並將其存儲在D1中。它看起來像這樣:

<?php 
include_once('D2/file1.php'); 
include_once('D2/file2.php'); 
//ect 

class myClass { 
    //class stuff 
} 
?> 

於是我寫這樣的主目錄中的文件:

<?php 
include_once('D1/myclass.php'); 
?> 

但是當我打開這個文件,我得到這個:

警告:include_once(file1.php)[function.include-once]:未能打開流:第2行中的/home/D1/D2/file1.php中沒有這樣的文件或目錄

「file1.php」肯定在那個目錄下,所以我做錯了什麼?

回答

2

當包含文件時,相對位置是相對於被調用的腳本而言的,即「當前工作目錄」。所以如果腳本A.php包含./test/B.phpB.php想包含./test/下的文件,則它將與A.php相關。您可以使用__DIR__創建絕對路徑,該路徑具有腳本路徑和名稱,而不管它包含在何處或使用$_SERVER['DOCUMENT_ROOT']這將指向文檔根目錄。

B.php例如:

<?php 
include(__DIR__.'/C.php'); 
//will include C.php under the same directory as B.php 
?> 

的另一種選擇是添加D1到包括在php.ini路徑。這告訴php在執行include時在該目錄中查找該文件。

+0

這是問題所在。謝謝! – TheEnigmaMachine

0

我猜你有權限問題。檢查文件夾/文件是否具有允許Web服務訪問的正確權限。

1

如果您在Linux操作系統或MAC操作系統上,您需要知道您的文件是否爲D2的大寫或小寫?等等;

另外我注意到你的class myClass {行,這是否意味着這個文件正在被其他文件包含/使用?在這種情況下,您的包含文件的相對位置可能會發生變化。

+0

這是正確的,「myClass」所在的文件是我正在嘗試包含的文件。這是否意味着當我從一個不同的目錄中包含「myclass.php」文件時,包含的相對位置會越來越混亂? – TheEnigmaMachine