如何更改PHP的基目录include()/ require()

时间:2014-05-27 11:17:36

标签: php path include base chdir

假设我的文档根目录是/ root,并且在该目录中我有我的index.php,加上两个名为branch1和branch2的子目录.coolch1和branch2都有包含文件,其中一个必须包含基于一个或者更多条件陈述。 (是的,我知道不可能在同一个名称下使用不同版本的文件,但这是我愿意接受的特殊情况。)

对于(简化)示例:

/root
/root/index.php
/root/branch1
/root/branch2/include.php
/root/branch2
/root/branch2/include.php

我想做的是这样的事情:

if ($condition)
  chdir ('branch1')
else
  chdir ('branch2');

include ('./include.php');

显然上面的代码不起作用,因为即使在chdir()之后,include路径仍然是相对于/root/index.php。

是否有可能(如果是这样,如何)更改include(),require()和其他涉及相对路径的操作的基本目录? (当然,这里的想法不仅仅是在上面的例子中做包含,而是更多。)

当然有人会指出正确的方法是:

if ($condition)
  include ('branch1/include.php')
else
  include ('branch2/include.php')

但是我故意在这里寻找一个kludge。 : - )

1 个答案:

答案 0 :(得分:0)

为什么不是全局变量?

const $BRANCH = $condition ? 'branch1' : 'branch2';

include ($BRANCH.'/include.php');