我有一个home.php文件,该文件使用php require命令引用fileA,该命令位于同一文件夹中,即localhost。代码是:
<?php // /localhost/home.php
require ('/fileA.php');
?>
fileA引用其代码fileB中的另一个文件。
到目前为止它的工作正常
当我访问fileC.php
时
我使用
<?php // /localhost/A/B/fileC.php
require ('../../fileA.php');
?>
代码能够获取fileA,但只有当fileB与fileC在同一文件夹中时才能正常工作,否则会产生404错误。我无法理解为什么会发生这种情况,因为fileB是由fileA调用的。
感谢。
答案 0 :(得分:2)
使用相对文件路径时,请记住它们是相对于当前工作目录的,而不是相对于执行包含的文件。当前工作目录在第一个请求时自动设置(在您的情况下为A/B
)。
一些简单的解决方案:在包含文件之前始终使用dirname(__FILE__)
,这样它相对于文件所在的文件:
<?php
require(dirname(__FILE__)."/FileA.php");
require(dirname(__FILE__)."/../../FileB.php");