3

PHPで最初のWebサイトを構築しています。私はローカルでテストしており、開発中の 2 台のコンピューター (自宅のコンピューターと Uni コンピューター) があり、メイン プロジェクトは Dropbox に保存されています。

ユーザー名が異なるため、両方のコンピューターでプロジェクトのルート パスが異なります。

「/home/vadar/Dropbox/ENELWebsite/public_html/」

「/home/tcpb1/Dropbox/ENELWebsite/public_html/」

ルート パスを使用してファイルを含めると、1 台のコンピューターでエラーが発生するため、これは明らかに問題になっています。

私はもともとこれをインデックス ページに含めようとしましたが、それを含むインクルード ファイルのルート パスも必要で、コンピューター間で変更する必要がありました。

$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 に答える