h-6ren">
gpt4 book ai didi

php - 在 php 中使用 "../"向上一级不起作用?

转载 作者:行者123 更新时间:2023-11-28 05:16:11 25 4
gpt4 key购买 nike

首先,在同一类别中提出了很多问题,但我没有遇到这些问题..所以这就是我打开这个问题的原因..其次我不是 php 开发人员...只知道基础知识包括,需要页眉和页脚..

这是我的目录结构:

xampp>htdocs>网站>“文件夹”和"file"

“文件夹”是css、sass、js、图片和元素。“元素”文件夹有 projecta.php 和 projectb.php"file"是index.php、header.php、footer.php、menu.php

所以上面是我的文件夹结构.. 当文件在根目录中时,一切都很好.. 例如,在索引页面中包括页眉、菜单和页脚 php 工作正常..

所以现在我想在“projects”文件夹中包含 projecta 的页眉、页脚和菜单页面,所以我尝试了这个

<?php include "../footer.php"; ?>

它不工作..看看下面的图片

enter image description here

看起来 css 文件没有执行..

这里是header 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; ?>" />

这是菜单片段

<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);
?>

最佳答案

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

Files are included based on the file path given or, if none is given, the include_path specified. If the file isn't found in the include_path, include will finally check in the calling script's own directory and the current working directory before failing.

我通常使用的解决方案是使用 PHP $_SERVER 变量定义服务器文档根目录。此解决方案完全不会出错,因为它取决于服务器环境的文档根配置。

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

我发现这也很烦人,因为您在本地服务器上工作,其中 public_htmlhtdocs 文件夹可能包含每个网站的子文件夹,例如您的网站例如。 $_SERVER['DOCUMENT_ROOT'] 将在大多数配置中返回服务器“公共(public)”根目录的绝对路径,不是您的网站子文件夹。这意味着您必须将网站文件夹添加到包含路径。

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

这很烦人,因为这意味着当网站被上传到生产服务器时,您可能不会为该网站提供额外的子文件夹,因此需要更改此包含。

显然这是一个真正的痛苦而不是很好的做法,恐怕我不知道该问题的解决方案是什么,尽管我确信会有更好的方法。希望这可以帮助您开始,也许其他人可以为(我们俩)提供更好的实践解决方案。

关于php - 在 php 中使用 "../"向上一级不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39302659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com