【问题标题】:Including php files into a site page将 php 文件包含到站点页面中
【发布时间】:2015-04-09 10:30:41
【问题描述】:

我正在尝试将我创建的 header.phpfooter.php 文件包含到每个页面中。到目前为止它一直在工作!

一旦我创建了一个新目录,例如 /new-site-area - 当我创建一个新的 php 页面并尝试包含 header.php 时,这没有接缝工作?

这是我正在使用的 php 包含,它正在工作......

<?php include ("includes/header.php");?>

当我尝试将它包含到 / 目录中的页面中时,它似乎停止工作。

示例:

www.mysite.com - 标题包括作品
www.mysite.com/new-directory/new-area - 标题包含不起作用

我不明白为什么它可以在我的网站根目录上运行,但是当页面位于我网站的不同 / 区域时就不行了。

如果这是一个无法解决的问题,请有人建议将 php 文件包含到网站页面中的更好方法!

谢谢!

【问题讨论】:

  • 请显示一些代码。
  • 在您打开&lt;?php标签error_reporting(E_ALL); ini_set('display_errors', 1);后立即将错误报告添加到文件顶部,看看它是否产生任何结果。
  • 它可能不起作用,因为目录引用不一样。您永远不应该对 dir 引用进行硬编码。

标签: php html header include


【解决方案1】:

您必须使用返回参数“../”浏览到您的目录

例如,您的页面

www.mysite.com/new-directory/

应该使用

<?php include ("../includes/header.php");?>

对于 2 级文件夹,如

www.mysite.com/new-directory/new-directory2

应该是

<?php include ("../../includes/header.php");?>

【讨论】:

    【解决方案2】:

    试试include "../includes/header.php" - 最好的办法是编写一些正确包含它的函数,例如:

    function load($file) {
        return $_SERVER['DOCUMENT_ROOT']."/includes/$file";
    }
    

    那就用include(load("header.php"));

    或者,如果您希望 load() 函数支持多个路径,请尝试以下操作:

    function load($file) {
        $paths = array(
            "includes",
            "some_other_dir/includes"
        );
        foreach($paths as $path) {
            if(file_exists($_SERVER['DOCUMENT_ROOT']."/$path/$file")) {
                return $_SERVER['DOCUMENT_ROOT']."/$path/$file";
            }
        }
        trigger_error("File $file not found in any of paths", E_USER_ERROR);
    }
    

    如果文件在任何指定的路径中,它将通过include(load("file.php"));包含,如果文件不存在则会抛出错误。

    【讨论】:

      【解决方案3】:

      如果您不想实现解决包含路径的方法,请使用框架。有很多小框架可以处理这个问题和许多其他问题。

      【讨论】:

        猜你喜欢
        • 2015-03-09
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        • 2019-07-17
        • 1970-01-01
        相关资源
        最近更新 更多