1

PHPでユーザーディレクトリのパスを見つける方法はありますか?

MAC OS XI では$_SERVER['DOCUMENT_ROOT']、ドキュメントが取得されているパスを見つけるために使用できます。このパスは次のとおりです。

/Users/jmlopez/www

httpd.confファイルを変更したため、自分のコンピューターで。に設定されていたと思います/Library/WebServer/Documents。私の大学のサーバーでは、次のように設定されています。

/home/www/html

doc.htmlというフォルダから取得したい場合は、testFolder単純に$_SERVER['DOCUMENT_ROOT'].'/testFolder/doc.html'. これはうまく機能しますが、ユーザー ページにあるドキュメントを参照する方法がわかりません。

Mac OS X

ユーザーページは次の場所に設定されています。

/Users/USERNAME/Sites

Linux サーバー

私の大学のサーバーのユーザーページは

/home/www/users/USERNAME/www

このパスをphpで取得する方法はありますか、それとも分析する必要があり$_SERVER['SCRIPT_FILENAME']ますか?

私の現在の解決策

を取得するための私の現在の解決策$fileRoot

$temp = explode("/", $_SERVER['SCRIPT_FILENAME']); 
if ( $temp[1] == "home" ) { //Linux
    if ( $temp[3] == "users") { $fileRoot = '/home/www/users/'.$temp[4].'/www';} 
    else { $fileRoot = '/home/www/html/'.$temp[4];} 
} elseif ($temp[1] == "Users" ) { //Mac
    if ( $temp[3] == "www" ) { $fileRoot = '/Users/'.$temp[2].'/www/'.$temp[4]; }
    else { $fileRoot = '/Users/'.$temp[2].'/Sites'; }
}

このようにして、私がサイトで作業している場合、http://localhost/someSite

次に、次$fileRootを指します:

/home/www/html/someSite 

Linuxで。

/Users/jmlopez/www/someSite

私のマックで。

$fileRoot = $_SERVER['DOCUMENT_ROOT'].'/someSite'Mac と Linux の両方で機能することに注意してください。

個人のウェブサイトで作業している場合は、http://localhost/~jmlopez

次に、次$fileRootを指します:

/home/www/users/jmlopez/www

Linuxで。

/Users/jmlopez/Sites

私のマックで。

質問は次のとおりです。私が投稿したソリューションを使用せずにこのパスを取得する方法はありますか? うまくいけば、簡単なものです。

4

1 に答える 1

2

Apache 2.3.13 (2.4.3 にも含まれています) には、まさにあなたが必要としている新しい機能があります。私は昨日それについて読んだだけですが、それを試す時間がありませんでした. 数週間しか公開されていないため、明らかに最新の apache が必要です。

新しい環境変数は「CONTEXT_DOCUMENT_ROOT」で、$_SERVER 変数に追加されます。変更管理によると、これにより、この目的のために追加された必要なものが正確に提供されます。バージョン管理ノートと2.4 リリース ノート以外のドキュメントが表示されない

「(mod_userdir や mod_alias などからの) 非グローバル URI からディレクトリへのマッピングに関する情報をスクリプトに提供する、新しい context_document_root と context_prefix を導入します。」ソース: http://marc.info/?l=apache-cvs&m=130928191414740


編集:

最新バージョンの Apache を持っていない場合は、おそらく最善の解決策があります (現在のファイルを確認してください)。使用することもできます

__DIR__

あなたが現在いるファイルのディレクトリも取得するには、どちらが少し簡単でしょうか?

于 2012-08-27T01:35:03.623 に答える