【问题标题】:PHP header file isn't working in a subfolderPHP 头文件在子文件夹中不起作用
【发布时间】:2013-08-27 19:57:17
【问题描述】:

我的网站上有一个评论页面,我希望我的网站对用户非常友好,因此我将其设为子索引。我的 index.php 在名为 reviews 的文件夹下(发现 here),所以域只是 /reviews。当我尝试包含 PHP 或 CSS 时,它会放弃并排除它们。

我用来包含我的 CSS 的代码(适用于所有其他页面)是:

<link rel="stylesheet" type="text/css" href="/stylesheets/index.css">

我使用的 PHP include() 是:

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

此 PHP 适用于所有不使用父文件夹的页面,例如。 index.php(用于我的主页)。

PHP 文档中的 HTML 为:

<html>
<center><nav>
<ul>
    <li><a href="/">Home</a></li>
    <li><a href="">Arcade</a>
        <ul>
            <li><a href="/arcade/action">Action</a></li>
            <li><a href="/arcade/arcade">Arcade</a></li>
            <li><a href="/arcade/puzzle">Puzzle</a></li>
            <li><a href="/arcade/vehicle">Vehicle</a></li>
            <li><a href="/arcade/violence">Violence</a></li>
            <li><a href="/arcade/defense">Defense</a></li>
            <li><a href="/arcade/rpg">RPG</a></li>
        </ul>
    </li>
    <li><a href="">Watch</a>
        <ul>
            <li><a href="/watch/tv">TV Shows</a></li>
            <li><a href="/watch/movies">Movies</a></li>
        </ul>
    </li>
    <li><a href="">Extras</a>
        <ul>

            <li><a href="/news">Updates</a></li>
        </ul>
    </li>
    <li><a href="/support">Support</a></li>
</ul>
</nav></center>
</html>

有人知道让我的 PHP 和 CSS 在子文件夹中工作的任何解决方案吗?

我的网站是http://www.gameshank.com/

首页正在使用header.php文件!

【问题讨论】:

  • 你尝试使用include('/header.php');
  • 包含文件名是相对于工作目录的。您必须工作的示例取决于包含路径设置。将其转换为以 ./../ 开头的 filanem 以不使用包含路径,如果您希望它对文件本身而不是工作目录更具表现力,还可以通过 __DIR__ 魔术常量进行绝对化。
  • @fred 这可能行不通,因为 / 可能不是站点的根目录,而是一些不起眼的 PHP 文件夹。相反,要么找出服务器根目录并使用其中的绝对路径,要么保持相对路径并在目录下的页面上使用include('../header.php');
  • 并将警告记录到文件中,这样您就可以在 PHP 错误日志中看到实际的错误消息是什么:How to get useful error messages in PHP? - PHP 通常会告诉您问题所在,您只需要“倾听”给它:)
  • @LS97 你说得有道理。

标签: php html css


【解决方案1】:

如果您知道 header.php 与您想要将其包含到的文件位于同一目录中:

include(__DIR__ . '/header.php');

这不受工作目录更改的影响,因此非常安全。

您可能还会发现以下问答很有趣:

此外,了解 CSS-URL(URL 路径在浏览器中解析)和 PHP 中的路径(那些文件路径在服务器上解析,浏览器还很远)之间的区别也很重要。

【讨论】:

  • 这会显示两条错误消息:警告:包含(/home/gameshan/public_html/reviews/header.php):无法打开流:/home/gameshan/public_html 中没有此类文件或目录第 5 行的 /reviews/index.php 警告:include(): 未能打开 '/home/gameshan/public_html/reviews/header.php' 以包含(include_path='.:/usr/lib/php:/usr/local /lib/php') 在 /home/gameshan/public_html/reviews/index.php 第 5 行
  • 那么header.php 文件在哪个目录中,include 命令在哪个文件中?在我的示例代码中,两者都在同一个目录中(如第一句中所写)。你需要在你的情况下采用它,所以如果你告诉两个文件名,这应该很容易解决。信息:您看到两个错误,但它们都属于同一类,所以这是一个问题。如果你修复它,两个错误都会立即消失。
【解决方案2】:

这行得通吗?

$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/header.php";
include($path);

【讨论】:

  • 这更像是一个评论而不是一个答案
【解决方案3】:

通过以下方式调用 .PHP 文件:

<?php
    include('../header.php')
?>

/../header.php 也不起作用...

然后清除您的浏览器历史记录和 cookie,然后从编辑端开始工作。

奇怪的修复,但它有效。但在编辑器清除历史记录和 cookie 之前,它无法工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2012-11-14
    • 1970-01-01
    相关资源
    最近更新 更多