【问题标题】:Including a file in an included folder's parent directory fails在包含文件夹的父目录中包含文件失败
【发布时间】:2023-05-17 19:05:02
【问题描述】:

我在.htaccess 文件中包含了一个包含一些类的文件夹。

public_html 下的某个更深的地方我包含了这个文件夹中的一个 PHP 文件。工作正常,include_path 已生效。

但是如果我这样写:

require_once '../DB.php';

失败了?

这个文件就在包含的文件夹上面,为什么PHP引擎找不到呢?

【问题讨论】:

  • 您在服务器的错误日志中看到任何错误吗?

标签: php directory relative-path include-path


【解决方案1】:

始终从当前工作目录(通常称为 CWD)解释相对路径。对于网络请求,这通常是处理请求的文件目录,但可以随时使用chdir() 更改,您可以使用getcwd() 检查它的当前值。

如果您希望您的代码对 cwd 具有弹性,您可以使用 __DIR__ 魔术常量,或者如果您使用的是古老的 php 版本(5.3 之前),则在您的包含中使用 dirname(__FILE__),如下所示:

require_once __DIR__.'/../DB.php';

【讨论】: