首先,在同一类别中提出了很多问题,但我没有遇到任何问题..所以这就是为什么我打开了这个问题..其次我不是php开发人员...知道基本知识包括,要求页眉和页脚..
这是我的目录结构:
xampp> htdocs>网站>“文件夹”和“文件”
“文件夹”是css,sass,js,图片和项目。 “Projects”文件夹有projecta.php和projectb.php “files”是index.php,header.php,footer.php,menu.php
所以上面是我的文件夹结构..当文件在根目录中时一切正常工作..例如,包括标题,菜单和页脚php在索引页面工作正常..
所以现在我想在“projects”文件夹中包含projecta的页眉,页脚和菜单页面,所以我尝试了这个
<?php include "../footer.php"; ?>
它不起作用..看下面的图片
看起来css文件没有执行..
这里有更多信息,标头snippit
<title><?php echo $page_title; ?></title>
<meta name="description" content="<?php echo $page_des; ?>">
<meta property="og:title" content="<?php echo $page_title; ?>" />
<meta property="og:description" content="<?php echo $page_des; ?>" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://www.example.com/<?php echo $page_url; ?>" />
这是菜单snippit
<ul>
<a <?php if ($page_nav == 'index.php') { ?>class="active"<?php } ?> href="index.php"><li><h2 class="mt">Home</h2><i>Go to</i></li></a>
<a <?php if ($page_nav == 'about.php') { ?>class="active"<?php } ?> href="about.php"><li><h2 class="mb">About</h2><i>Me</i></li></a>
<a <?php if ($page_nav == 'projects.php') { ?>class="active"<?php } ?> href="projects.php"><li><h2 class="mt">Work</h2><i>My</i></li></a>
<a <?php if ($page_nav == 'contact.php') { ?>class="active"<?php } ?> href="contact.php"><li><h2 class="mb">Contact</h2><i>Me</i></li></a>
</ul>
这就是我在页面中包含标题和菜单的方式,
<?php
$page_title = "title a";
$page_des = "description a";
$page_url = "index.php";
include "header.php";
?>
<?php
$page_nav = basename($_SERVER['SCRIPT_NAME']);
require "menu.php"; ?>
所以有人请帮忙找到有效的答案?是的,我知道,你们会在上面显示的代码中发现很多错误..但那没问题......我需要答案..谢谢......
找到答案:首先感谢所有给出他们建议的人..我尝试了以下所有内容,但没有任何作用..所以我发现这段代码工作正常..但事情是它看起来像 @Dane Caswell 和 @Scott Dallas 的答案..但我没有想法,为什么他们的答案不起作用,为什么这个工作..!但无论如何谢谢大家..我在这里粘贴答案因为有人可能会发现它有用..!
<?php
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/your directory/common/header.php";
include_once($path);
?>
答案 0 :(得分:0)
这个问题是因为PHP解释器对文件系统的访问远远超过public_html
或htdocs
(站点根目录)目录。它可以访问根目录上的所有文件和文件夹。可以使建立实际当前工作目录变得困难。在失败之前,PHP将检查文件引用的当前工作文件位置。请参阅PHP文档for include()
根据给定的文件路径包含文件,如果没有给出,则包含 指定的include_path。如果文件中没有找到 include_path,include将最终签入调用脚本自己的 目录和失败前的当前工作目录。
我经常使用的解决方案是使用PHP $_SERVER
变量定义服务器文档根目录。这个解决方案不完全万无一失,因为它取决于服务器环境&#39;文档根配置。
include($_SERVER['DOCUMENT_ROOT'] . '/footer.php');
我发现这也很烦人,因为您正在使用本地服务器,其中public_html
或htdocs
文件夹可能包含每个网站的子文件夹,例如您的网站。大多数配置中的$_SERVER['DOCUMENT_ROOT']
将返回到服务器的绝对路径&#39; public&#39; root,不您的网站子文件夹。这意味着您必须将网站文件夹添加到包含路径。
include($_SERVER['DOCUMENT_ROOT'] . 'your_website/footer.php');
这非常令人讨厌,因为这意味着当网站上传到生产服务器时,您可能没有该网站的额外子文件夹,因此需要更改此内容。
显然这是一个真正的痛苦而不是很好的练习,我担心我不知道该问题的解决方案是什么,尽管我确信会有更好的方法。希望这可以帮助你开始,也许其他人可以提供(我们俩)更好的练习解决方案。
答案 1 :(得分:0)
这也让我很烦恼..你可以用
$_SERVER['DOCUMENT_ROOT']
当我开始一个新项目时,我喜欢在我的所有文件的顶部执行此操作:
<?php include($_SERVER['DOCUMENT_ROOT'] . "/inc/config.php"); ?>
在我的配置文件中,我将大量变量存储为有用的值,我将在整个项目中使用这些值,因此我不必继续输入$ _SERVER [&#39; DOCUMENT_ROOT&#39;]
或者你可以像我一样停止懒惰,并尽可能多地使用$ _SERVER [&#39; DOCUMENT_ROOT&#39;]:)