2012-03-06 80 views
0

我有一個PHP應用程序,我試圖包括,但它導致的問題,因爲我試圖從一個子目錄中包含它的文件。舉例來說,這裏是(或多或少)我想與之合作的目錄結構:如何從當前腳本以外的基本路徑包含PHP腳本?

/site 
    /scripts 
     /local 
      some_script.php 
    lib_file_a.php 
    lib_file_b.php 
    lib_load.php 

lib_load.php有文件lib_file_a.phplib_file_b.php(相對路徑)的include命令。

我想完成的是從some_script.php包括lib_load.php,但是我的方式存在問題,包括lib_load.php。起初我試過require('../../../lib_load.php');。如你所期望的,我看到錯誤「無法打開需要的C:\ xampp \ htdocs \ site \ scripts \ local \ lib_file_a.php'」。正如你所看到的,PHP試圖包含一個不存在的文件。我發現了一個Stack Overflow帖子,告訴我使用絕對路徑(link),但這沒有幫助。我接下來試過這段代碼:

require(realpath(dirname(__FILE__) . '../../../' . 'lib_load.php')); 

但是,這一次,同樣的錯誤又回來了。我究竟做錯了什麼?

編輯:我意識到這個問題實際上是在庫加載程序,其結果是包括基於絕對路徑的文件,而不是相對路徑。 (我應該仔細閱讀)。我通過更改庫使用的路徑來解決問題。如果國防部看到這個請求,應該關閉這個問題。

回答

2

試試這個:

require dirname(__FILE__) . '/../../../lib_load.php'); 

或者,如果你使用PHP 5.3或更高版本使用這個代替(它看起來更好):

require __DIR__ . '/../../../lib_load.php'); 
8

要包括的lib負載

require $_SERVER['DOCUMENT_ROOT'] . '/scripts/lib_load.php'; 

lib加載內部

require dirname(__FILE__) . '/lib_file_a.php'; 

如果我對你的問題有所瞭解