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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我无法理解关于PHP相对包含路径的规则集。如果我运行文件A.PHP-并且文件A.PHP包含文件B.PHP,其中包括文件C.PHP,那么C.PHP的相对路径应该与B.PHP的位置相关,还是与A的位置相关.PHP?也就是说,包含被调用的文件或仅当前的工作目录是什么以及决定当前工作目录的是什么文件?

提问于
用户回答回答于

它与主脚本相关,在这种情况下是A.php。请记住,include()只是将代码插入到当前正在运行的脚本中。

也就是说,包含从哪个文件被调用是否有关系?

没有。

如果你想要什么关系,做一个包括相对于B.php,使用__FILE__恒定的(或__DIR__因为PHP 5.2 IIRC),这将始终指向的代码行位于字面当前文件。

include(dirname(__FILE__)."/C.PHP");
用户回答回答于

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

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

使用这两个函数,你总是可以建立一个相对于你所需要的包含路径。

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

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

无论在哪里调用b.php。

实际上,这是建立相对路径的首选方式,因为额外的代码使PHP不必遍历include_path来尝试定位目标文件。

扫码关注云+社区