在一个不同的目录中,使用PHP include嵌套include。

5

我正在处理的当前项目的结构如下:

  • root/index.php
  • root/includes/php/first.php
  • root/includes/php/functions.php

因此,index.php 包含 first.php:

<?php include_once("includes/php/first.php"); ?>

通常,我的first.php会调用以下函数:
<?php include_once("includes/php/functions.php"); ?>

假设相对路径仍然是从索引页面开始,但在迁移到新服务器时却无法正常工作。我尝试从first.php创建相对路径:
include_once("functions.php");

现在看起来这个方法可行。

通常来说,哪种方式是正确的?我想要推出这个项目,让任何人都能够安装它。

2个回答

12

包含文件是相对于执行包含操作的文件而言的。如果您确实想要确保并避免任何歧义,可以采取以下方法:

include dirname(__FILE__) . "/functions.php";

非常感谢!不确定为什么之前那种方式能够工作,但这个解决方案将解决未来出现的问题。 - kilrizzy
+1 - 我原本想建议使用 $_SERVER['SCRIPT_FILENAME'] 元素来实现相同的功能,但这个方法更好。 - Atli
2
我倾向于为我的PHP应用程序创建一些定义,并将我的root_path和web_path存储在那里以供整个应用程序使用。 - Andrew
我听说php在文件包含时没有进行预处理,而是在达到该语句时执行...但如果该文件被包含在另一个文件中并改变了目录模型,它如何与包含该文件的文件相关而不进行一些预处理呢? - Alex_Nabu

0

我总是使用:

include ($_SERVER['DOCUMENT_ROOT']."/include/php/functions.php");

这样你就始终知道自己的位置(从根目录开始),而且你的代码可以从一个地方复制到另一个地方。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接