如何在php中设置包含路径

时间:2013-03-16 18:31:06

标签: php path include

我在设置每页的包含属性时遇到了困难。

当所有内容都在同一目录中时,它似乎工作正常,但如果我从另一个目录引用一个页面,那么一切都会停止工作,因为它可能应该。

现在有什么最好的方法来引用php中不同目录的类和文件?肯定有人想出了从不同文件夹引用文件的技巧。

目前,我按照以下

进行此操作
include ("../config/Authenticate.php");

现在,Authenticate.php可以引用另一个类或包含另一个代码。那么你如何让它们一起工作呢?

4 个答案:

答案 0 :(得分:0)

您可以将它放在索引页面的顶部,显然可以将路径更改为与您的应用程序相关的路径。然后只需从包含路径集中的任何位置包含('some_file.php')。

$publicPath = getcwd();
chdir(__DIR__ . "/..");
$sitePath = getcwd();
chdir($publicPath);

$paths = array(
    $sitePath . '/config',
    $sitePath . '/config/foo',
    $sitePath . '/foo',
    $sitePath . '/foo/bar',
    get_include_path()
);

set_include_path(implode(PATH_SEPARATOR, $paths));
unset($paths);

编辑*这假设您有一个公共文件夹,其中包含index.php,以及公共文件夹之外的所有其他文件。

答案 1 :(得分:0)

您可以在包含路径中使用__DIR__来设置相对于文件的路径。

你将包括:

include (__DIR__ . "/../config/Authenticate.php");

答案 2 :(得分:0)

如果你所包含的文件需要包含另一个文件,只要你在该文件中也有包含脚本,它就应该有用。

答案 3 :(得分:0)

这是一种适合我的方法。

$arr_path = explode(DIRECTORY_SEPARATOR, __DIR__);

$arr_path = array_reverse($arr_path);
$depthCounter=0;
for($i=0;$i<count($arr_path);$i++){
    // just replace BDW with your main directory
    if ($arr_path[$i] === "BDW"){
        $depthCounter = $i;
    }   
}
// clear array
unset($arr_path);

$DEPTH = "";
for($i=0;$i<$depthCounter;$i++){
    $DEPTH= $DEPTH . "../";
}


include ($DEPTH . 'config/SessionStart.php');

这不是最干净的代码。但似乎有效。整合@ MonsterTKE的方法可能适用于大多数人。