1

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

我在我的'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'文件中,我包含了来自根目录的更多文件。

我只想让我的所有包含在每个目录中工作。有任何想法吗?

+0

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

回答

0

include语句包含与执行include的脚本相关的文件,这就是您遇到此问题的原因。你有几个可用的选项给你:

  • 您可以前言你包括与像$_SERVER['DOCUMENT_ROOT'],如果你使用Apache的路径,将引用文档根目录。因此,像include($_SERVER['DOCUMENT_ROOT'] . "/includes/header.php");这样的东西将作为绝对路径出现在脚本中,所以如果从结构中的各个地方调用它,它仍然可以工作,但仍然是可移植的(请注意,它将需要从Web服务器调用,如果不是,你通过CLI使用你的脚本)。
  • 您可以在目录结构的根目录下创建某种占位符,然后继续工作,直到找到它,然后将其视为根,并使您的include语句与此相关。这将更加便携,并且可以在CLI模式下工作,但会稍微耗费大量资源。
  • 根据包含文件所在的脚本的位置,您可以使用不同的包含语句,例如include("includes/header.php");如果您包含的文件位于您目前所在目录的includes目录中,或者如果包含的文件为include("../includes/header.php"); if includes目录位于正在运行的脚本的父目录中。
相关问题