在多个目录中包含一个文件 - PHP

时间:2014-01-16 07:43:49

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

我正在尝试按顺序获取我的include()函数,但每次我在一个目录中切换语法时都会弄乱其子目录,反之亦然。

我有一个名为' header.php'在我的本地主机/ FTS / includes / header.php'夹。 ' FTS'文件夹有我的index.php文件,因此在我测试时它在技术上是我的根文件夹。

在文件' localhost / FTS / admin.php'我使用行include 'includes/header.php';并且它工作正常但是当我进入文件' localhost / FTS / admin / members.php'找不到包含文件。也在我的' header.php'内。文件我从根目录中包含了几个文件。

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

1 个答案:

答案 0 :(得分:0)

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

  • 您可以使用$_SERVER['DOCUMENT_ROOT']之类的内容添加包含路径,如果您使用的是Apache,则会引用您的文档根目录。因此include( $_SERVER['DOCUMENT_ROOT'] . "/includes/header.php" );之类的东西会在脚本中显示为绝对路径,因此如果从结构中的各个位置调用它,它仍然可以工作,但仍然是可移植的(注意它需要从Web服务器调用,这赢得了如果你通过CLI使用你的脚本,那就很有效。
  • 您可以在目录结构的根目录中创建某种占位符,并在找到它之前继续工作,然后将其视为根并使您的include语句相对于此。这将更加便携,并且可以在CLI模式下工作,但它会略微增加资源。
  • 您可以根据包含文件所包含的脚本的位置使用不同的include语句,例如include( "includes/header.php" );,如果您包含的文件位于includes目录中您目前所在的目录,如果include( "../includes/header.php" );目录位于正在运行的脚本的父目录中,则为includes