我在相对包含文件方面遇到了一些问题。问题不在于 require_once 找不到文件,而是它可以在没有文件的地方找到文件。我已将问题简化为三个小班。
所以这是我的目录结构:
public_html/
index.php
commands/
CommandFactory.php
account/
Status.php
索引.php:
require_once 'commands/CommandFactory.php';
$factory = new CommandFactory();
命令工厂.php:
class CommandFactory{
public function __construct()
{
echo getcwd() . '<br/>'; //xxx\public_html (which is good, this is where index.php is
//require_once 'account/Status.php'; // This works as expected
require_once 'account/Status.php'; // This ALSO works, but it shouldn't
$status = new Status(); // This works, though it shouldn't.
}
}
我已经通过将 CommandFactory 移动到不同的目录进行了测试,从而解决了问题。但是,我不明白为什么可以包含该文件。它不应该包括相对于 CommandFactory 的 Status,它应该是相对于 index.php 的。我添加了当前的工作目录,看看出了什么问题,但我无法弄清楚。有人知道这是如何以及为什么起作用的吗?