3

我正在用 PHP 构建我的第一个网站。我在本地测试它,有两台我正在开发它的计算机,我的家用计算机和我的 Uni 计算机,主要项目存储在 Dropbox 中。

该项目在两台计算机上具有不同的根路径,因为它们具有不同的用户名。

'/home/vadar/Dropbox/ENELWebsite/public_html/'

'/home/tcpb1/Dropbox/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 文件夹移动到其中,但我确信有一种更智能的方法可以将文件包含在项目本身中。

4

2 回答 2

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';
}
于 2012-12-15T03:36:15.117 回答
0
define('APP_DIR', dirname(__DIR__));     
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . APP_DIR);

这将在您的包含路径中插入当前目录。现在,无论您的环境如何,您的包含路径都将始终包含您的当前目录。

在这种情况下,您不依赖$_SERVER,因为它可以被客户端操纵。

于 2012-12-15T03:59:45.223 回答