使用php中的“../”无法正常运行一级?

时间:2016-09-03 02:18:52

标签: php html css

首先,在同一类别中提出了很多问题,但我没有遇到任何问题..所以这就是为什么我打开了这个问题..其次我不是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"; ?>

它不起作用..看下面的图片

enter image description here

看起来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);
?>

2 个答案:

答案 0 :(得分:0)

这个问题是因为PHP解释器对文件系统的访问远远超过public_htmlhtdocs(站点根目录)目录。它可以访问根目录上的所有文件和文件夹。可以使建立实际当前工作目录变得困难。在失败之前,PHP将检查文件引用的当前工作文件位置。请参阅PHP文档for include()

  

根据给定的文件路径包含文件,如果没有给出,则包含   指定的include_path。如果文件中没有找到   include_path,include将最终签入调用脚本自己的   目录和失败前的当前工作目录。

我经常使用的解决方案是使用PHP $_SERVER变量定义服务器文档根目录。这个解决方案完全万无一失,因为它取决于服务器环境&#39;文档根配置。

include($_SERVER['DOCUMENT_ROOT'] . '/footer.php');

我发现这也很烦人,因为您正在使用本地服务器,其中public_htmlhtdocs文件夹可能包含每个网站的子文件夹,例如您的网站。大多数配置中的$_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;]:)