我正在用PHP构建我的第一个网站。我正在本地测试它,我正在开发它的两台电脑,我的家用电脑和我的Uni电脑,主项目存储在Dropbox中。
项目在两台计算机上都有不同的根路径,因为它们具有不同的用户名。
'/家/ vadar /升降梭箱/ ENELWebsite /的public_html /'
'/家/ tcpb1 /升降梭箱/ ENELWebsite /的public_html /'
这显然已经成为一个问题,因为使用根路径包含文件会导致一台计算机出错。
我最初尝试在我的索引页面中包含它,但它还需要包含它的包含文件的根路径,我必须在计算机之间进行更改。
$dir_home = '/home/vadar/Dropbox/ENELWebsite/public_html/';
$dir_uni = '/home/tcpb1/Dropbox/ENELWebsite/public_html/';
if(file_exists($dir_home) OR is_dir($dir_home)){
define('APP_DIR', $dir_home); //home comp
}
elseif(file_exists($dir_uni) OR is_dir($dir_uni)){
define('APP_DIR', $dir_uni); //uni comp
}
else{
echo 'No include directory exists';
}
解决此问题的最明智的方法是什么?我意识到我可以在其中任何一个上创建一个新的用户文件夹,并将Dropbox文件夹移入其中,但我确信有一种更聪明的方法可以在项目中包含文件。
答案 0 :(得分:3)
使用$_SERVER['DOCUMENT_ROOT']查找根文件夹。
$dir = $_SERVER['DOCUMENT_ROOT']; // will return /home/vadar/Dropbox/ENELWebsite/public_html/
if(file_exists($dir)){ //just to make sure
define('APP_DIR', $dir); //home comp
}
else{
echo 'No include directory exists';
}
答案 1 :(得分:0)
define('APP_DIR', dirname(__DIR__));
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . APP_DIR);
这将在include路径中插入当前目录。现在,无论您的环境如何,您的包含路径都将始终具有当前目录。
在这种情况下,您不依赖$_SERVER
,因为它可以由客户操纵。