【发布时间】:2017-10-06 16:40:03
【问题描述】:
我有这个目录树:
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 将不存在。
【问题讨论】:
-
我不知道为什么......我一次又一次遇到同样的问题。我解决了我只包含魔术常数
__DIR__的问题。我认为问题在于$SERVER['WEB_ROOT'],这可能是每个包含的起点 -
includes 与包含它们的文件的文件夹无关,而是与 php.ini 配置文件中定义的包含路径相关,并且(通常,因为该路径列表中的第一个条目是一个“.”)当前工作目录(通常是正在执行的主脚本的文件夹)
标签: php