ENV setzen (Apache und PHP)
mmstgt
- webserver
Hallo!
Folgendes Problem: Wenn wir über PHP mit exec("env", $pid);
uns die Environment-Variablen anzeigen lässt, so ist beispielsweise HOME immer auf den Benutzer gesetzt, der Apache gestartet hat.
Gesetzt sein sollten diese Variablen aber auf den Benutzer, unter dem der Apache (wie in der httpd.conf eingestellt) läuft (z. B. test123).
Wenn wir allerdings "whoami" ausführen, so wird der korrekte Benutzer angezeigt, nämlich test123.
Standardmäßig scheint Apache ja kein home-Directory zu haben. Wir haben allerdings einen neuen Benutzer mit Home-Directory eingerichtet, auf den wir via exec() auch den Zugriff benötigen bzw. die ENV richtig gesetzt sein muss.
Mit SetEnv haben wir schon unser Glück probiert: "SetEnv HOME /home/test123", allerdings funktioniert das so leider nicht.
Gibt es einen anderen Befehl der in die httpd.conf reingehört?
Viele Grüße
Moin!
Folgendes Problem: Wenn wir über PHP mit
exec("env", $pid);
uns die Environment-Variablen anzeigen lässt, so ist beispielsweise HOME immer auf den Benutzer gesetzt, der Apache gestartet hat.
Also root?
Gesetzt sein sollten diese Variablen aber auf den Benutzer, unter dem der Apache (wie in der httpd.conf eingestellt) läuft (z. B. test123).
Das dürfte extrem davon abhängen, in welcher Konstellation PHP ausgeführt wird und wie dadurch das Ausführen von externen Programmen via exec() beeinflusst wird. Da gibt es zahlreiche Methoden, die dafür sorgen können, dass der User und/oder das Environment wechselt.
Das einfachste wäre immer noch, wenn man direkt mit PHP nachschaut, was im Environment drinsteht: $_ENV, getenv(), apache_getenv() etc. existieren.
Standardmäßig scheint Apache ja kein home-Directory zu haben. Wir haben allerdings einen neuen Benutzer mit Home-Directory eingerichtet, auf den wir via exec() auch den Zugriff benötigen bzw. die ENV richtig gesetzt sein muss.
Die Frage ist erstmal ganz allgemein: Was willst du überhaupt erreichen? Sich auf Environment-Variablen zu verlassen scheint mir nicht unbedingt der ideale Vorgang zu sein, insbesondere wenn man sich schon daran versucht hat. Und in der Regel ist sowas auch nicht notwendig, man kann auch problemlos ohne sowas auskommen, und trotzdem einem separaten User-Account entsprechende Zugriffsrechte etc. gewähren.
- Sven Rautenberg