2013-06-24 152 views
1

對不起再次提問,但我真的需要幫助。我在包含header_sub.php的根目錄/ lib中包含header.php。在根文件通常可以直接包括他們這段代碼:更改工作目錄

include_once('lib/header.php'); 

但現在我有使用example.php在子目錄/博客,如果我使用這些

include_once(../'lib/header.php'); or 
include_once($_SERVER['DOCUMENT_ROOT'].'/lib/header.php'); or 
include_once(dirname(__FILE__).'/lib/header.php'); 

header_sub.php不會正確包含。

有沒有辦法在不修改它們的情況下包含header.php和header_sub.php?

一些機構建議使用這些:

$oldcwd = getcwd(); // Save the old working directory 
    chdir("../"); // Moves up a folder, so from /blog to/
    include("header.php"); // Include the file with the working directory as if the header file were being loaded directly, from it's folder 
    chdir($oldcwd); // Set the working directory back to before 

然而,即使我可以看到當前的URL是CHDIR(),它仍包括這根/博客/ lib目錄後根目錄......

+0

你應該嘗試保持一致並且有一個可以訪問這些文件的共同路徑。創造黑客來閱讀糟糕的設計並不是一個解決方案。 – DevZer0

+0

是'/ lib'的'/ blog'子目錄嗎? – Sergio

+0

嗨塞爾吉奧,不,它不是,他們都是根 – Andrew

回答

2

您需要的文件路徑取決於您是否正在調用該文件。 實例:

/root調用文件中/root - >include_once('header.php');
/root調用文件中/root/lib - >include_once('lib/header.php');
/root/lib調用文件中/root - >include_once('../header.php');
/root/blog調用文件中/root/lib - >include_once(../lib/'header.php');
/root/blog/css調用文件/root/lib - >include_once(../../lib/'header.php');

如果你這樣做,所有的路徑都是相對的,你可以改變根文件夾,一切仍然有效。

另一個選擇是你有一個名爲「common.php」或「include.php」的文件是你爲某些文件夾定義路徑。如果您的網站目錄有許多子文件夾,這很有用。