2011-11-21 215 views
2

我有我所有頁面中包含的header.php和footer.php文件。採樣頁面看起來是這樣的 -如何在不同的頁面上顯示相同的頁眉和頁腳?

<?php include($_SERVER['DOCUMENT_ROOT'].'/header.php');?> 

<div id="content"> 
... 
</div> <!-- content --> 

<?php include($_SERVER['DOCUMENT_ROOT'].'/footer.php') ?> 

雖然這個運作良好的服務器上,但是當我在本地測試[XAMPP在Windows 7]頁,我得到的頁腳以下錯誤消息,而不是頭的,同樣 -

Warning: include(C:/xampp/htdocs/header.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\f\index.php on line 1 

Warning: include() [function.include]: Failed opening 'C:/xampp/htdocs/header.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\f\index.php on line 1 

這使得測試非常乏味,因爲我必須上傳到服務器進行每次小的更改。此外,我挖掘WP代碼,並使用get-header()來顯示header.php文件。我無法完全理解這個功能。我的網站不使用WP。

包含頁眉和頁腳文件的正確方法是什麼?

+0

仰望PHP'include'功能 – Max

回答

1

似乎$_SERVER['DOCUMENT_ROOT']指向C:\xampp\htdocs,而你的腳本是在C:\xampp\htdocs\f\,請檢查當地環境中的值$_SERVER['DOCUMENT_ROOT']

編輯:

<?php 
$rootDir = ""; 
if(strpos($_SERVER['HTTP_HOST'],'localhost')===FALSE) 
{ 
    //On Production 
    $rootDir = $_SERVER['DOCUMENT_ROOT']; 
} 
else 
{ 
    //On Dev server 
    $rootDir = $_SERVER['DOCUMENT_ROOT'].'/f'; 
} 

<?php include($rootDir.'/header.php');?> 

<div id="content"> 
... 
</div> <!-- content --> 

<?php include($rootDir.'/footer.php') ?> 


?> 
+0

謝謝!另外,如何更改$ _SERVER變量的值? –

+0

這個變量由PHP服務器自動填充。不過看起來你已經在你的本地環境中創建了一個子文件夾「f」來進行測試。請看我編輯的答案,它可能會幫助你。 –

+0

作品!爲我挽回了一生。我在本地創建子文件夾是因爲我同時在多個項目/網站上工作。我希望這是正確的做法!? –

2

包含任何文件的正確方法是include()或require()函數。 Wordpress使用了一個get_header()函數,因爲頭文件不僅僅是一個文件,所以他們創建了一個輸出函數。

這個問題似乎是$ _SERVER變量的一個問題。自從使用PHP之後已經有相當長的一段時間了,但是我建議你做的只是使用相對路徑。例如,如果header.php文件和footer.php文件在同一目錄下的index.php,你可以這樣做:

<?php include("header.php');?> 

<div id="content"> 
... 
</div> <!-- content --> 

<?php include('footer.php') ?> 
+0

我已經試過這已經,雖然它在本地工作,但在服務器上,不顯示頁眉/頁腳!相反,我可以更改$ _SERVER的值嗎? –

2

簡單有用方式(我在所有的項目中使用此):

// find Base path 
define('BASE_PATH', dirname(__FILE__)); 

// include files 
include BASE_PATH . '/header.php'; 
include BASE_PATH . '/footer.php'; 
相關問題