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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie wollen entweder das Ergebnis:
http://us.php.net/manual/en/function.getmyuid.php oder
http://us.php.net/manual/en/function.posix-getuid.php geschickt
http://us.php.net/manual/en/function.posix-getpwuid.php
Wenn
safemode
deaktiviert ist, versuchen Sie diese ein