【问题标题】:PHP header include file works in one file and doesnt in otherPHP 头包含文件在一个文件中有效,而在其他文件中无效
【发布时间】:2014-03-13 12:32:49
【问题描述】:

我才刚开始使用 PHP,有一个问题让我很头疼。

我有包含我的header.phpfooter.php 的文件夹。在我的header.php 中,我有我的 html 标头标签。包括body标签的一部分,因为它在整个网站上都是一样的。我遇到的问题是我无法让我的 css 文件连接到不同目录中的其他页面。请参阅下面的示例,我的文件结构。

index.php

-(css) bootstrap.css,styles.css

-(inc) header.php, footer.php

-(房间) toddlers.php, montessori.php

-(other) otherFile.php,andAnother.php

所以header.php 有指向bootstrap.cssstyles.css 和所有图片的链接。

如果我在toddlers.php 中包含header.php,一切正常。然后我去把它包含在让我们说index.php 并且我的css或图像都没有显示。在header.php 我有这个到bootstrap.css 的链接:

<link href="../bootstrap.min.css" rel="stylesheet">

styles.css 相同,toddlers.php 中有效,index.php 中无效。

这是我的header.php 包含toddlers.php 中的代码

    define("APPLICATION_PATH", realpath('../Sites/'));
define("CURRENT_PATH", getcwd());

$paths = array(APPLICATION_PATH, CURRENT_PATH);
set_include_path(implode($paths, PATH_SEPARATOR));

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

如何将我的所有图像和 css 包含在 header.php 中,然后将其包含在任何其他文件中?

【问题讨论】:

  • 您的路径似乎有误。当您更改到不同的目录时,您必须记住路径会发生变化,并且您的包含文件可能需要更新。
  • 我明白这一点,但有什么办法可以做到吗?因为我的 header.php 包含在所有页面中。其中一些位于不同的目录中。
  • 或者我应该在所有目录中创建 header.php 包含文件?
  • 'include ' 不会改变当前工作目录。因此,如果您在嵌套的包含文件中使用相对路径,则该路径是相对于原始工作目录的,而不是当前“包含文件”所在的位置。它会变得非常混乱。 ;-/ 就像这条评论一样。
  • @webAwwards 调试我的代码并不意味着 MY 代码,了解更多meta.stackexchange.com/questions/216018/…

标签: php html css


【解决方案1】:

您应该使用绝对链接而不是相对链接。
实际上,html 是逐字包含的,css 表是在 php 执行后链接的。这意味着 CSS 包含将适用于与 toddlers.php 相同目录中的每个页面,但不适用于其他页面。

【讨论】:

  • 如果我在我的本地主机上开发。然后将我的网站移至托管,是否需要更新绝对路径?
  • 不一定。如果您将路径命名为相对于主机根目录(由变量 $_SERVER["DOCUMENT_ROOT"] 给出),那么在您迁移时一切都会自动适应。
【解决方案2】:

最简单的方法是使用绝对 URL 而不是相对 URL。另一种方法是每个目录都有特定的标题和相对路径。这更麻烦,并且只有在您更改主机时才会生效,因为您将没有更新可做。另一种方法是使用您在包含文件中使用的 PHP 变量来根据页面本身更改路径。因此,例如,根目录中的页面将使用类似 $path = '' 的内容,而内部目录中的页面将使用 $path = '../' 等等......只需确保更新 $path插入包含的代码之前的变量。

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2015-11-06
    相关资源
    最近更新 更多