PHP 是否包含相对于文件或调用代码的路径?
2022-08-30 07:12:51
我无法理解有关PHP相对包含路径的规则集。如果我运行文件 A.PHP-,文件 A.PHP包含文件 B.PHP 其中包括文件 C.PHP,则 C.PHP 的相对路径是相对于 B.PHP 的位置,还是与 A.PHP 的位置相关?也就是说,从哪个文件调用包含的文件,还是只考虑当前工作目录是什么,以及决定当前工作目录的因素是否重要?
我无法理解有关PHP相对包含路径的规则集。如果我运行文件 A.PHP-,文件 A.PHP包含文件 B.PHP 其中包括文件 C.PHP,则 C.PHP 的相对路径是相对于 B.PHP 的位置,还是与 A.PHP 的位置相关?也就是说,从哪个文件调用包含的文件,还是只考虑当前工作目录是什么,以及决定当前工作目录的因素是否重要?
它是相对于主脚本而言的,在本例中为 A.php。请记住,只需将代码插入到当前运行的脚本中即可。include()
也就是说,从哪个文件调用包含是否重要
不。
如果你想让它变得重要,并相对于B.php做一个包含,请使用常量(或自PHP 5.2 IIRC以来),它将始终指向代码行所在的文本当前文件。__FILE__
__DIR__
include(dirname(__FILE__)."/C.PHP");
@Pekka把我带到了那里,但只是想分享我学到的东西:
getcwd()
返回您开始执行的文件所在的目录。
dirname(__FILE__)
返回包含当前正在执行的代码的文件的目录。
使用这两个函数,您始终可以构建相对于所需内容的包含路径。
例如,如果 b.php 和 c.php共享一个目录,b.php 可以包含 c.php如下所示:
include(dirname(__FILE__).'/c.php');
无论b.php是从哪里来的。
实际上,这是建立相对路径的首选方法,因为额外的代码使 PHP 不必在尝试查找目标文件时循环访问include_path。
来源: