2009-12-11 113 views
5

当前项目我工作的结构是这样的:PHP包括包括(不同的目录)中

  • 根/ index.php文件
  • 根/包括/ PHP/first.php
  • 根/包括/ 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"); 

而这现在似乎工作。

这通常是正确的方法来做到这一点?我想推出这个项目,所以任何人都可以安装它。

回答

11

包括相对于正在执行包括的文件。如果你真的想确保,避免任何含糊之处,你可以这样做:

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

非常感谢!不知道为什么它以另一种方式工作,但这种解决方案将解决未来的问题 – kilrizzy 2009-12-11 14:44:31

+0

+1 - 我会建议使用'$ _SERVER ['SCRIPT_FILENAME']'元素来做同样的事情,但这样会好得多。 – Atli 2009-12-11 14:48:38

+2

我倾向于为我的PHP应用程序创建几个定义,并将我的root_path和web_path存储在整个 – Andrew 2009-12-11 14:52:20

0

我总是用:

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

这样,你总是知道你在哪里(从根推出)和你的代码可以从一个地方复制到另一个地方。