Lesen Sie Benutzer-home-Verzeichnis von PHP

Ich kann nicht einen Weg finden, wie home-Verzeichnis des Benutzers (z.B. /home/jack; was auch immer ~ in bash-Punkte) in PHP mit CGI (suPHP). Das $_ENV array leer ist, und getenv('HOME') gibt nichts zurück.

Der Grund, warum ich dies tun wollen, ist, dass in Abwesenheit von configuration anderes sage, ich will zu finden, variable Dateien von meiner Anwendung in /home/user/.myappnamehere, wie die meisten Linux-Anwendungen zu tun.


Habe ich etwas gebaut, aber es ist nicht die beste; Während es funktioniert, es nimmt eine Menge über das system (z.B. das Vorhandensein der /etc/passwd)

 $usr = get_current_user();
    $passwd = file('/etc/passwd');
    $var = false;
    foreach ($passwd as $line) {
        if (strstr($line, $usr) !== false) {
            $parts = explode(':', $line);
            $var = realpath($parts[5].'/.report');
            break;
        }
    }
  • PHP mit CGI? Wer wäre der aktuelle Benutzer in diesem Kontext?
  • Wegen suPHP (und auch mit suexec und welche anderen Möglichkeiten es gibt) den PHP-Prozess ausgeführt wie der Benutzer, der Besitzer des Skripts (.php -) Datei.
  • Ihre Lösung setzt auch Voraus, dass der Nutzer das Skript ausgeführt wird, wird als erlaubt, die Datei zu Lesen, die normalerweise nur root sollte in der Lage sein zu tun...
  • Auf meinem Ubuntu 9.04 server, die keine Besondere Konfiguration in diesem Bereich, /etc/passwd-s-Modus -rwxr--r--, also lesbar für alle. Das ist normal, denn viele Anwendungen benötigen den Zugang, um es für z.B. Authentifizierung.
Schreibe einen Kommentar