我在设置每页的包含属性时遇到了困难。
当所有内容都在同一目录中时,它似乎工作正常,但如果我从另一个目录引用一个页面,那么一切都会停止工作,因为它可能应该。
现在有什么最好的方法来引用php中不同目录的类和文件?肯定有人想出了从不同文件夹引用文件的技巧。
目前,我按照以下
进行此操作include ("../config/Authenticate.php");
现在,Authenticate.php可以引用另一个类或包含另一个代码。那么你如何让它们一起工作呢?
答案 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的方法可能适用于大多数人。