我有header.php和footer.php文件,我包含在我的所有页面中。示例页面如下所示 -
<?php include($_SERVER['DOCUMENT_ROOT'].'/header.php');?>
<div id="content">
...
</div> <!-- content -->
<?php include($_SERVER['DOCUMENT_ROOT'].'/footer.php') ?>
虽然这在服务器上运行良好,但是当我在本地测试页面[在Windows 7上运行xampp]时,我得到以下错误消息而不是标题,类似于页脚 -
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 :(得分:2)
包含任何文件的正确方法是include()或require()函数。 Wordpress使用get_header()函数,因为标题只是1个文件,所以他们创建了一个输出它的函数。
你遇到的问题似乎是$ _SERVER变量的问题。自从我使用PHP以来已经有很长一段时间,但我建议你做的只是使用相对路径。例如,如果header.php和footer.php文件与index.php在同一目录中,您可以这样做:
<?php include("header.php');?>
<div id="content">
...
</div> <!-- content -->
<?php include('footer.php') ?>
答案 1 :(得分:2)
简单和有用方式(我在所有项目中都使用此方法):
// find Base path
define( 'BASE_PATH', dirname(__FILE__) );
// include files
include BASE_PATH . '/header.php';
include BASE_PATH . '/footer.php';
答案 2 :(得分: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') ?>
?>