PHP 是否包含相对于文件或调用代码的路径?

2022-08-30 07:12:51

我无法理解有关PHP相对包含路径的规则集。如果我运行文件 A.PHP-,文件 A.PHP包含文件 B.PHP 其中包括文件 C.PHP,则 C.PHP 的相对路径是相对于 B.PHP 的位置,还是与 A.PHP 的位置相关?也就是说,从哪个文件调用包含的文件,还是只考虑当前工作目录是什么,以及决定当前工作目录的因素是否重要?


答案 1

它是相对于主脚本而言的,在本例中为 A.php。请记住,只需将代码插入到当前运行的脚本中即可。include()

也就是说,从哪个文件调用包含是否重要

不。

如果你想让它变得重要,并相对于B.php做一个包含,请使用常量(或自PHP 5.2 IIRC以来),它将始终指向代码行所在的文本当前文件。__FILE____DIR__

include(dirname(__FILE__)."/C.PHP");

答案 2

@Pekka把我带到了那里,但只是想分享我学到的东西:

getcwd() 返回您开始执行的文件所在的目录。

dirname(__FILE__) 返回包含当前正在执行的代码的文件的目录。

使用这两个函数,您始终可以构建相对于所需内容的包含路径。

例如,如果 b.php 和 c.php共享一个目录,b.php 可以包含 c.php如下所示:

include(dirname(__FILE__).'/c.php');

无论b.php是从哪里来的。

实际上,这是建立相对路径的首选方法,因为额外的代码使 PHP 不必在尝试查找目标文件时循环访问include_path。

来源:

getcwd() 和 dirname(__FILE__) 之间的区别 ?我应该使用哪个?

为什么应该使用 dirname(__FILE__)


推荐