2015-06-17 42 views
3

我已經構造有這個文件和文件夾服務器:一種在php中動態包含路徑的方法?

index.php 
|lib -> lib.php 
|framework -> fw.php 
|folderA -> index2.php 

在lib.php有泛函()裏面,一個require_once稱之爲「fw.php」正確地從index2.php:

functionA(){ 
    require_once "../framework/fw.php"; 
    //other stuff... 
} 

如果它是從index.php調用的,則必須更改路徑。 我真的需要一種方法來動態地包含路徑,而不必在每個頁面中設置特定的代碼。

是否存在修復路徑的方法?

我試圖使用__FILE__,dirname()...但沒有一個滿意的解決方案。

+0

爲什麼不使用絕對路徑? – hexafraction

回答

3

您可能需要調整此功能才能使其正常工作,具體取決於您的路徑設置方式......但對於大多數標準設置,這將起作用。

$basepath = substr($_SERVER['DOCUMENT_ROOT'], 0, strrpos($_SERVER['DOCUMENT_ROOT'], '/')). 
'/framework/'; 

require_once($basepath.'fw.php'); 
1

如果使用PHP 5.3+,你可以使用魔術常量__DIR__

functionA(){ 
    require_once __DIR__."/../framework/fw.php"; 
    //other stuff... 
} 

這將需要的lib/lib.php的泛函的路徑,並從那裏即使lib.php被計入指數。 PHP或任何地方。

而對於以前的PHP版本: dirname(__FILE__)