首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP包含相对于文件或调用代码的路径吗?

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

Stack Overflow用户
提问于 2011-09-11 22:20:13
回答 6查看 99.2K关注 0票数 114

我在理解有关PHP相对包含路径的规则集时遇到了问题。如果我运行.php文件,并且文件A.PHP包含包含文件C.PHP的文件B.PHP,那么C.PHP的相对路径应该与B.PHP的位置相关,还是与A.PHP的位置相关?也就是说,include是从哪个文件调用的重要吗?或者只关心当前工作目录是什么?是什么决定了当前工作目录?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-09-11 22:22:06

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

include也就是说,从哪个文件调用

是否重要

不是的。

如果你想让它变得重要,并且做一个与B.php相关的包含,使用__FILE__常量(或PHP5.2IIRC以来的__DIR__ ),它将始终指向代码行所在的当前文本文件。

include(dirname(__FILE__)."/C.PHP");
票数 135
EN

Stack Overflow用户

发布于 2011-09-11 22:51:55

@Pekka让我做到了这一点,但我只想分享我学到的东西:

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

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

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

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

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

无论b.php是从哪里调用的。

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

资料来源:

Difference Between getcwd() and dirname(__FILE__) ? Which should I use?

Why you should use dirname(__FILE__)

票数 22
EN

Stack Overflow用户

发布于 2014-05-28 12:33:38

如果包含路径不是以./../开头,则包含

  • ,例如:

include 'C.php';//优先级: include_path (包含'.‘首先),//然后是当前.php文件的路径(即B.php),然后包含以./../开头的路径,例如:

include './C.php';//相对于'.‘包含'../C.php';//还相对于‘..’

上面的...是相对于getcwd()的,它默认为条目.php文件的路径(即A.php)。

在PHP 5.4.3 (构建日期: May 8 2012 00:47:34)上进行了测试。

(还要注意,chdir()可以更改getcwd()的输出。)

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7378814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档