Wie kommst du auf den aktuellen Benutzer angemeldet sein, um einen apache-Reich?

Schreibe ich einen einfachen in-house-frontend zu Subversion. Wir haben einen Apache-Server serviert die SVN-repositories Dank WebDAV. Auch die Authentifizierung erfolgt durch Apache-Reich und Open Directory. Für was es Wert ist, das ist im Grunde eine ziemlich vanilla von Mac OS X Server 10.6-setup.

Nun, einige der Aufgaben, die unser front-end verantwortlich ist der Auftakt Notwendigkeit zu wissen, den Benutzernamen des Benutzers ein, den Aufruf der Aktion. Zum Beispiel erzeugen Sie ein repository braucht es, damit wir entsprechende Protokolle, die tatsächlich erstellt wurden. Wenn ich nicht diese Informationen liefern, SVN benutzt nur den Prozess, der es erstellt, welche in unserem Fall ist der Benutzer, der laufende httpd.

Dies mache ich in php, aber ich glaube nicht unbedingt implementieren müssen, um diese mit Hilfe von php. Wenn ich die Daten in ein shell-Skript, dass das auch in Ordnung. Was zählt, ist, dass ich irgendwie die Informationen. Die Lösung, die ich zunächst entwickelt, das ich annahm, arbeitete seit es korrekt gemeldet, mein Benutzername ist, einfach rufen:

get_current_user();

Jedoch scheint dies immer Rückkehr meinen user-Namen, auch wenn einige andere user ist Auftakt der Aktion, während Sie sich angemeldet haben, um das Reich. Gibt es einen Weg, um die richtigen Benutzer?


EDIT: ich vielleicht etwas zu schnell springen die Waffe hier. Es sieht aus, als wenn die erstere variable nicht gesetzt, wird nach einer gewissen Zeit. Der Benutzer ist jedoch noch angemeldet, da es keine Aufforderung zum login. So, die unten vorgeschlagene Lösung ist nicht wirklich zutreffend.


Jetzt fühle ich mich wie ein idjit. Diese einfache snippet funktionierte (obwohl es schwer zu finden):

$username = $_SERVER["PHP_AUTH_USER"];

Hatte dies jedoch nicht:

$username = apache_getenv("REMOTE_USER");

Hat jemand eine Idee, warum letzteres nicht funktioniert? Den nur docs, die ich finden konnte vermuten, dass dies funktioniert nur auf Apache 2. Allerdings bin ich in der Tat läuft Apache 2, so dass konnte nicht sein.

InformationsquelleAutor Marcus Stade | 2009-11-16

Schreibe einen Kommentar