【问题标题】:including php files in a header that is itself included in files in different folder levels将 php 文件包含在标头中,该标头本身包含在不同文件夹级别的文件中
【发布时间】:2013-07-17 07:38:15
【问题描述】:

好的,标题有点混乱,但这是我网站的结构:

/
|--header.php
|--page1.php
+--css
   |--style.css
+--subsection
   |--page2.php
+--functions
   |--classes.php

对,所以page1.phppage2.php 都会include header.php。我只使用从任何 php 页面到 header.php 的相对文件路径来做到这一点。

header.php本身包含其他文件;例如css/style.cssfunctions/classes.php

我可能会像下面这样包含它们:

<link rel="stylesheet" href="css/style.css">

<?php require_once("functions/classes.php"); ?>

这适用于page1.php,因为相关路径是正确的。对于subsection/page2.php,这将失败,因为路径应该是../css/style.css../functions/classes.php,但仍保持header.php 中定义的路径。

我的问题是,无论调用header.php(例如apage.php)的文件位于网站目录中的什么位置,我如何才能让header.php 始终为其包含使用正确的相对文件路径。

【问题讨论】:

  • 也可以使用ajax从page1加载page2.php的内容。
  • 我真的认为你误解了这个问题
  • 这就是为什么总是在配置或默认文件中定义根路径是一种很好的做法,如下面的 JohnnyFaldo 所述。如果这是不可能的,那么总是使用相对于$_SERVER["DOCUMENT_ROOT"] 的路径

标签: php path directory


【解决方案1】:

设置 css /functions 的基本路径:

define('CSS_BASE','insert/full/path/here');

然后访问 header.php 中的 css 使用

<link rel="stylesheet" href="<?=CSS_BASE;?>/style.css">

【讨论】:

  • 这可能是最好的答案,尽管我最终只使用了一个变量:$parent_dir = "http://" .$_SERVER['SERVER_NAME'] ."/web_dir";
  • 很公平,我喜欢在应用程序的顶部为这样的事情定义一些常量,有一些好处:php.net/manual/en/language.constants.php
【解决方案2】:

对于 php 包含,相对于 header.php 的路径是可以的。

对于 css 文件,您应该使用绝对路径,例如 &lt;link rel="stylesheet" href="/css/style.css"&gt;

编辑:css/javascripts 文件不是“包含”;这些是 html 标签,因此它们将由浏览器在客户端进行处理。这就是为什么路径应该相对于 html 所在页面的 url,而不是它在服务器上的位置的原因。

【讨论】:

    【解决方案3】:

    当我这样做时,我在每个页面(page1.phppage2.php)的开头设置了一个变量(比如$urlStart),其中包含主目录的相对路径(例如page1.php 将有@987654325 @, page2.php 将有 $urlStart='../')。然后在您的header.php 中,在每个 URL 的开头使用此变量。像这样:

    <link rel="stylesheet" href="<?php echo $urlStart;?>css/style.css">
    
    <?php require_once($urlStart . "functions/classes.php"); ?>
    

    【讨论】:

      【解决方案4】:

      如果您在 page1 中包含 page2.php,那么您的路径将起作用。无需返回上一个文件夹。

      【讨论】:

      • 我没有在 page1 中包含 page2。两个页面都包含标题
      猜你喜欢
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 2021-01-25
      相关资源
      最近更新 更多