1

我试图让我的 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”文件中,我还包含了我根目录中的几个文件。

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

4

1 回答 1

0

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目录是否在父目录中正在运行的脚本的目录。
于 2014-01-16T07:54:14.743 回答