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

0pl*_*us1 13 php include

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

include 'inc/footer.php';
Run Code Online (Sandbox Code Playgroud)

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

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

这是一个从来没有真正问题的东西,因为我总是想出来,但我总是想知道如何在php中完成包含工作.

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

谢谢

Tom*_*igh 36

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

首先在相对于当前工作目录的每个include_path条目中查找包含文件,然后在当前脚本的目录中查找.例如,如果你的include_path是库,当前工作目录是/ www /,你包括include/a.php,那个文件中包含"b.php",b.php首先在/ www/libraries /中查找,然后在/网络/包含/.如果filename以./或../开头,则仅分别在当前工作目录或当前工作目录的父目录中查找

你的问题陈述:

如果我想在footer.php中包含另一个文件,我必须相对于index.php文件(包含它的那个)进行.

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

include( dirname(__FILE__) . '/../file.php')
Run Code Online (Sandbox Code Playgroud)

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

set_include_path(get_include_path() . PATH_SEPARATOR . '/absolute/path');
Run Code Online (Sandbox Code Playgroud)

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