php包含有没有办法包含仅相对于该文档的文件?

时间:2009-06-23 09:18:57

标签: php include

如果我有一个包含inc / footer.php的index.php文件,我会写:

include 'inc/footer.php';

如果我想在footer.php中包含另一个文件,我必须相对于index.php文件(包含它的那个)进行。这可能不是问题,但如果我想从整个不同的位置包含index.php呢?

我知道有几种方法可以实现这一点,例如定义绝对路径或使用dirname( FILE )。

这从来就不是一个真正的问题,因为我总是想出来,但我总是想知道如何在php中完成包含。

有人可以解释一下我在幕后发生了什么事吗?

由于

2 个答案:

答案 0 :(得分:35)

这可能会有所帮助:(来自http://php.net/manual/en/function.include.php

  

首先查看包含文件   for for each include_path条目   相对于目前的工作   目录,然后在目录中   当前脚本例如。如果你的   include_path是库,current   工作目录是/ www /,你   包括include / a.php,还有   在该文件中包含“b.php”,b.php   首先看看/ www / libraries /   然后在/ www / include /。如果文件名   从./或../开始,看起来   仅适用于当前的工作   当前的目录或父目录   工作目录,分别为

你的问题是:

  

如果我想要包含其他文件   在footer.php里面,我必须这样做   相对于index.php文件(   一个包括它的人。)

仅当您尝试include()的文件路径以./../开头时才会出现这种情况。如果需要使用相对路径在当前文件上包含文件,则可以(如您的建议)使用:

include( dirname(__FILE__) . '/../file.php')

如果定义绝对路径,还可以将其添加到当前的include_path:

set_include_path(get_include_path() . PATH_SEPARATOR . '/absolute/path');

然后,您可以执行相对于'/ absolute / path /'的所有包含。

答案 1 :(得分:-3)

找到答案的最佳位置是PHP手册。

http://php.net/manual/en/function.include.php

简短回答: 该路径是相对于执行的PHP脚本而不是子包含的。

设置函数,类等文件夹的全局绝对路径是最好的方法。