我有这个目录树:
test.php
foodir
`---- foo.php
bardir
`---- bar.php
当我打开test.php时,我包含了foo.php。然后,我希望foo.php包含bar.php。
test.php的:
include 'foodir/foo.php';
foo.php:
include '../bardir/bar.php';
然而,当我打开test.php时,我得到:
警告:include(../ bardir / bar.php):无法打开流:没有这样的文件或目录
我注意到如果我将目录树更改为:
test.php
foodir
`---- foo.php
---- bardir
`---- bar.php
然后将foo.php更改为:
include 'bardir/bar.php';
一切正常。看来我可以包含相对于当前包含的文件的文件 但是,为什么我无法前往该文件的目录树?
修改
我知道我可以将include 'bardir/bar.php'
放在 foo.php 中。它会在test.php的位置搜索bar.php。但是,如果我从test.php所在目录以外的目录中包含foo.php,那么这并不能解决我的问题。这是因为在其他目录中,bardir/bar.php
不会存在。
答案 0 :(得分:0)
当您使用include 'foodir/foo.php';
时,该文件现在基本上在test.php
的“范围”中运行。
因此,该文件中包含include '../bardir/bar.php'
;
将上一个文件夹,然后搜索bardir,这不是: (它正在寻找这种安排:)
parent/test.php
parent/foodir
`---- foo.php
bardir
`---- bar.php
因此,在foo.php
内使用的正确包含将为include 'bardir/bar.php';
简而言之:如果您打开test.php
,则所有包含文件中使用的所有包含路径都应该相对于test.php
的位置 - 而不是它们的实际位置。
ps。:如评论中所述:包含首先检查已定义的include-dir,只有在没有匹配时,路径才被视为“相对”。
答案 1 :(得分:0)
简单地说:
include dirname(__DIR__).'/bardir/bar.php';
__DIR__
是使用/调用此常量的文件的绝对目录路径(无论它包含在哪里),因此__DIR__
等于/full/absolute/path/foodir
。并且dirname(__DIR__)
位于路径的一个目录中,因此dirname(__DIR__)
/full/absolute/path
和bar.php
所在的位置为/full/absolute/path/bardir
。这就是我们想要的,这就是我们得到的。
这种方式你不必担心包括路径相关性。无论在何处foodir/foo.php
都包含在
答案 2 :(得分:0)
"当您使用
$("body").on("mouseenter", ".pin", function() { $(".map-box").css("opacity", 1); }) .on("click", ".map-box button", function() { $(".map-box").css("opacity", 0); });
时,它会假定要查找的基本目录 file是当前文件的目录"
因此,当您必须包含来自另一个目录的文件时,您必须指定父目录的相对路径,如此处include
包含所以请说明
"Base"
我们将使用
Base -> A
->file1.php
->B
->file1.php
用于从A添加文件,反之亦然。
假设include "../A/file1.php";
为指定目录的一级
你也可以像../
一样使用常量来获取当前文件的目录名称