2011-09-22 24 views
1

我使用require_once("header.php");爲我網站的所有頁面。儘管如此,我覺得我只能將該代碼用於直接在public_html文件夾下提交的文件。如果我將require_once("header.php");代碼用於位於public_html目錄(例如襯衫)中的任何其他文件(例如public_html/shirts/example.php),則header.php不會加載圖像,鏈接或任何其他頁面正確。如何爲不同文件夾中的項目使用require_once標頭?

我知道在短期內解決這個問題,我可以爲該目錄創建一個新的頭文件並將../添加到所有的代碼中,但我認爲這有一個更簡單的方法。有誰知道一種方法,我可以只改變header.php的代碼,所以我不必製作單獨的標題?

謝謝。

+0

這是相對和絕對路徑之間的差異。但你需要了解路徑(根據平臺):http://en.wikipedia.org/wiki/Path_%28computing%29 –

+1

http://stackoverflow.com/questions/1755216/php-relative-and-absolute-路徑 –

回答

0

您可以添加到您的include_path

要麼添加header.php所在的當前目錄,要麼創建一個名爲includes somewhere的文件夾並將其添加到包含路徑中。

您可以更新在php.ini中的include_path(最簡單的),或者做編程方式是這樣的:

set_include_path(implode(PATH_SEPARATOR, array(
    '/path/to/your/includes', 
    get_include_path(), 
))); 

的編程方法效果很好,但除非你的大部分文件都通過一個共同的腳本服務(即前端控制器模式),那麼你需要將該代碼複製到你不理想的所有文件中。有時你也可以使用.htaccess來設置include_path,但前提是PHP是Apache模塊。

只要你的結構相當靜態,包含使用../也沒有錯。

+0

我更新了php.ini中的include_path,但單個頁面現在無法識別include_path =「。:/ home/boldfo5/includes」中的header.php。有沒有辦法來解決這個問題? – Andrew

+0

確保您在更改php.ini後重新啓動網絡服務器以使更改生效。你的意思是個人頁面無法識別header.php?有些頁面可以識別它嗎?由於您添加了包含路徑,因此您應該可以從任何腳本中包含「header.php」',而無需任何路徑信息,並且如果在當前目錄中找不到它,它將在/ home中查找它/ boldfo5 /包括。 – drew010

相關問題