【问题标题】:Including a file in multiple directories - PHP在多个目录中包含一个文件 - PHP
【发布时间】:2014-02-05 00:29:00
【问题描述】:

我试图让我的 include() 函数按顺序排列,但每次我在一个目录中切换语法时,它都会弄乱它的子目录,反之亦然。

我的“localhost/FTS/includes/header.php”文件夹中有一个名为“header.php”的文件。 “FTS”文件夹有我的 index.php 文件,所以在我测试时它在技术上是我的根文件夹。

在文件'localhost/FTS/admin.php'中,我使用include 'includes/header.php';行,它工作正常,但是当我进入文件'localhost/FTS/admin/members.php'时,包含文件不是成立。在我的“header.php”文件中,我还包含了我根目录中的几个文件。

我只希望我的所有包含都可以在每个目录中使用。有任何想法吗?

【问题讨论】:

  • 我所做的是在安装的根目录下放置一个像 config.php 这样的指标文件。然后我有一个例程向上遍历目录,直到检测到该文件并使所有包含相对于该目录。

标签: php content-management-system directory subdirectory php-include


【解决方案1】:

include 语句包含与执行 include 的脚本相关的文件,这就是您看到此问题的原因。您有两种选择:

  • 您可以在包含路径前加上$_SERVER['DOCUMENT_ROOT'] 之类的内容,如果您使用的是 Apache,它将引用您的文档根目录。所以像include( $_SERVER['DOCUMENT_ROOT'] . "/includes/header.php" ); 这样的东西将在脚本中显示为绝对路径,因此如果从结构中的各个位置调用它就会工作,但仍然是可移植的(请注意,它需要从 Web 服务器调用,这不会如果您通过 CLI 使用脚本,则工作正常)。
  • 您可以在目录结构的根目录中创建某种占位符,然后一直向上直到找到它,然后将其视为根目录并使包含语句与此相关。这将更具可移植性并在 CLI 模式下工作,但会稍微占用更多资源。
  • 您可以使用不同的包含语句,具体取决于包含包含文件的脚本所在的位置,例如 include( "includes/header.php" ); 如果您包含的文件位于您当前所在目录的 includes 目录中, 或 include( "../includes/header.php" ); 如果 includes 目录位于正在运行的脚本的父目录中。

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 2014-07-13
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    相关资源
    最近更新 更多