2012-10-06 75 views
1

因此,我在/inc文件夾中設置了我的包含文件,例如header.php,nav.phpfooter.php包含來自不同目錄的文件

然後我將這些文件包含在我的頁面中。但是,如果我有另一個文件夾,例如wiki,我想將這些文件包含到wiki的頁面中,包含中斷的文件路徑。

例子:我已經從wiki目錄頁面包含這一點。

<?php include_once('../inc/header.php'); ?> 

我有兩個其他包括header.php文件,但因爲我包括他們在不同的目錄,既包括休息,除非我去追加在包括路徑../

我想知道什麼是包括不同的目錄中的文件的最佳途徑,不必回去收拾的路徑?

回答

1

最簡單的解決方案?使用絕對路徑。

0

包括他們這樣

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'inc'.DIRECTORY_SEPARATOR.'header.php'); 

這可能是工作!

3

在初始文件中使用realpath創建常量,然後使用易於閱讀和管理,但現在絕對路徑引用它們。

這裏你可以看到一個例子:

How can I get the "application root" of my URL from PHP?

我還定義之前,建議爲常量定義測試。

+0

比我的回答更好解釋。做得好。 –

0

我喜歡使用這種方法:

define('ROOT_DIR', dirname(__FILE__) . '/'); // Defined on the index or in the bootstrap 
include(ROOT_DIR . 'subfolder/fileName.php'); 
1

如果這些文件是在同一級別的目錄,相對pathes(帶../)將是相同的。如果你有一個在另一個內,你需要在子目錄中的開頭有../。改變路徑的唯一方法是創建一個鏈接作爲表示主目錄的子目錄,儘管這會對遞歸流程產生危險的後果。

順便說一句,include_once意味着這個操作是「可選」,這意味着該計劃將繼續執行。如果您需要包含這些文件,請使用require_once,如果程序不在那裏,程序將中斷。

0

如果你使用PHP的本機通過set_include_path添加一個包含文件夾,那麼你可以只是他們的名字包括文件。

<?php 
/** 
* The path to your /inc/ folder. 
*/ 
$path = '/absolute/path/to/inc/'; 

/** 
* get_include_path retrieve's the current include path. 
* It's a bad idea to over write the entire include path 
* The PATH_SEPARATOR constant is set per operating system 
*/ 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 

/** 
* You can now include any files in /inc/ from any directory with no path 
*/ 
include_once('header.php'); 
?> 
0

$_SERVER['DOCUMENT_ROOT']向你的網絡服務器,例如的DocumentRoot Apache的。然後你可以把它作爲一個穩定的數據和地圖,因爲這不會改變。

include_once($_SERVER['DOCUMENT_ROOT'].'/inc/header.php'); 
0

我發現,我不得不這樣做str_replace函數( 「\\」, 「/」,$ _ SERVER [ 'DOCUMENT_ROOT'])在IIS上運行時是否有幫助。

相關問題