2010-02-01 79 views
0

好的說我有包含在一個文件夾/ myProgram一個代碼庫/和具有不同的文件夾,如/ myProgram/lib中/,/ myProgram /文檔/等...PHP5 CLI制定基本目錄的最佳方式是什麼?

如何在PHP中,我可以在/ myProgram /之前檢測任何文件夾,並創建一個基本變量,這樣我的includes和require就可以相對於基本目錄/ myProgram /寫入,這樣我就可以將myProgram放入任何東西,比如根目錄,我的主目錄,/ path /到/ myProgram /,等等?

不需要在windows中工作,只需一個* nix環境。這全部來自命令行解析器或可執行腳本。

回答

0

這是我是如何做到的......正是我想要的!一些玩過我的程序後發現它。

// START Directory Bootstrap 
$location = dirname(__FILE__); 
$rootLoc = strpos($location, "myProgram"); 
if($rootLoc === FALSE) 
    die("WARNING! myProgram Root Directory Not Found!\n"); 
$root = substr($location, 0, $rootLoc); 
$root .= "myProgram"; 
// Change Directory for working includes and requires. 
chdir($root); 

此處定位啓動腳本的位置,然後嘗試查找基礎目錄。如果找不到基礎「myProgram」,我認爲腳本被放置在錯誤的位置,並且需要失敗。否則,它會創建一個到myProgram的子字符串,然後在最後加上myProgram。最後,我們將目錄更改爲允許包括和要求,如...

include_once("config/serverSettings.php"); 
require_once("config/mySQLSettings.php"); 

法律命令。這就是我一直在尋找的東西,最後我決定將它上傳給其他人看。

+0

假設你像我一樣使用chdir命令,就可以通過使用「config/mySQLSettings.php」來訪問/ path/to/myProgram/config /。 – Urda 2010-02-03 14:11:54

+0

如果我將程序移動到'/ path/to/my_program /',會發生什麼情況,因爲我碰巧喜歡這種命名結構? – 2010-03-07 12:06:45

+0

只需更改'$ rootLoc = strpos($ location,「myProgram」);'to'$ rootLoc = strpos($ location,「my_program」);'更新'$。=「myProgram」;'to'$ root 。=「my_program」;'在引導程序中基本上將'myProgram'的所有​​引用更新爲'my_program'。 – Urda 2010-03-07 14:18:31

0

我會建議使用從當前文件的相對路徑,像這樣:

include (dirname(__FILE__).'/../includes/something.inc.php'); 

這避開硬編碼可能會改變一個目錄名。作爲一個好處,這應該適用於任何系統。

你也可以做類似這樣的東西:

// In MyProgram/includes/config.php for instance: 
define("BASE_DIR", realpath(dirname(__FILE__).'/../..'); 

然後你就可以使用以下方法:

include(BASE_DIR.'/includes/class.php'); 

我會強烈建議針對包括硬編碼的目錄名的任何解決方案你的應用程序是在。

+0

無論如何,我可以解決它嗎?我真的想建立包括,並要求從根目錄myProgram了。就像$ HOME/myProgram/...設置。 – Urda 2010-02-02 00:09:34

+0

@Urda:查看我的編輯。 – 2010-02-02 08:34:24

相關問題