Php require() - 相对路径

时间:2011-01-12 20:37:29

标签: html data-structures directory relative-path

这是一个愚蠢的问题。当文件A执行文件B的include(),文件B执行文件C的包含,并且所有路径都是相对的时,是相对于它们自己的路径的“子”引用,或者是“主”文件(文件A)中包含它们?

例如:

目录结构

  

     

header.html(文件B)

     
    

/ images / logo.png(文件C)

         

/ site / index.php(文件A)

  

index.php包含:    包括( '../了header.html');

header.html包含:    包括( '图像/ logo.png');

这会有用吗?或者因为index.php是'主'文件,它会尝试在'sites'文件夹中查找'images'吗?

2 个答案:

答案 0 :(得分:1)

路径相对于工作目录。初始工作目录是包含直接执行以响应HTTP请求的PHP文件的目录(即您所谓的 master 文件。)。

include不会更改工作目录,但可以通过调用chdir手动更改。但是,我建议不要仅仅为include更改工作目录。

更好地使用set_include_path或相应的配置选项,或者如Pekka建议的那样,使用__DIR__构建相对于当前文件目录的文件名。

答案 1 :(得分:1)

它们总是相对于“主”文件。包含的文件被视为主代码中的源代码“注入”,因此它们的行为就像它们在主脚本中一样。

要解决与实际当前文件相关的问题,请使用始终指向其所在文件的__FILE____DIR__常量。