Subversion の簡単な社内フロントエンドを作成しています。WebDAV のおかげで、SVN リポジトリを提供する Apache セットアップができました。また、認証は Apache レルムと Open Directory を介して行われます。価値のあるものとして、これは基本的にかなりバニラの Mac OS X Server 10.6 セットアップです。
ここで、フロントエンドが開始を担当するタスクのいくつかは、アクションを呼び出すユーザーのユーザー名を知る必要があります。たとえば、リポジトリの作成には、実際に誰が作成したかの適切なログを取得するために必要です。この情報を提供しない場合、SVN はそれを作成したプロセスを使用します。この場合は、httpd を実行しているユーザーです。
これはphpで行っていますが、必ずしもphpを使用して実装する必要はありません。シェル スクリプトで情報を取得できれば、それも問題ありません。重要なのは、私が何らかの方法で情報を取得することです。私が最初に開発したソリューションは、ユーザー名が正しく報告されたので機能すると想定していましたが、次のように呼び出しているだけです。
get_current_user();
ただし、レルムにログインしているときに他のユーザーがアクションを開始している場合でも、これは常に私のユーザー名を返すようです。正しいユーザーを取得する方法はありますか?
編集:ここで銃をジャンプするには少し速すぎたかもしれません. 一定の時間が経過しても前の変数が設定されないように見えます。ただし、ログイン要求がないため、ユーザーはログインしたままです。したがって、以下に提案する解決策は実際には適用できません。
今、私はidjitのように感じます. この単純なスニペットは機能しました (見つけるのは困難でしたが)。
$username = $_SERVER["PHP_AUTH_USER"];
ただし、これはしませんでした:
$username = apache_getenv("REMOTE_USER");
後者が機能しない理由について誰かが考えましたか? 私が見つけた唯一のドキュメントは、これがApache 2でのみ機能することを示唆しています.しかし、私は実際にはApache 2を実行しているので、そうではありません.