PHP: get_current_user() vs. exec('whoami')
Kurze version der Frage:
Was ist der Unterschied zwischen
get_current_user();
und exec('whoami');
?
Lange version der Frage:
- Ich bin auf einem XAMPP "Localhost" auf einem Mac.
- Bin ich mit Apache, Aufbau einer PHP
basierte website in einem Ordner (nennen wir es folderxyz) innerhalb der
htdocs-Ordner (var/www in einigen Varianten von Linux+Apache). - Ich war Herumspielen mit Datenbank-Anbindung,
testen, PDO::ERRMODE_EXCEPTION hier beschrieben: Link
Und ich habe diesen Fehler:
file_put_contents(PDOErrors.txt): failed to open stream: Permission
verweigert...
So, ich habe einige Detektivarbeit und es scheint, dass, um dies zu beheben muss ich ändern das CHMOD
Einstellungen der Datei PDOErrors.txt auf 777.
Aber meine Fragen sind etwas anderes. Während dieses Prozesses, erkannte ich, dass ich nicht deutlich verstehen, das Konzept der user
in Apache, PHP und MySQL.
- Das PHP-Handbuch sagt, dass
get_current_user()
"Ruft den Namen des Besitzers des aktuellen PHP-Skript" Link - Das PHP-Handbuch sagt, dass
exec('whoami')
gibt "der Benutzername besitzt, der mit php/httpd-Prozess" Link - Wenn ich
get_current_user()
bekomme ich meinefirstnamelastname
, das ist mein account-name auf meinem Mac. - Wenn ich
exec('whoami')
bekomme ichdaemon
.
So...
- Was ist die Beziehung zwischen
firstnamelastname
unddaemon
? - Was ist die Beziehung zwischen den "der Besitzer des aktuellen PHP-Skript" und "username besitzt, der mit php/httpd-Prozess" ?
- Wer braucht die Berechtigung zum schreiben PDOErrors.txt? Ist es
firstnamelastname
oderdaemon
? - Wer braucht die Berechtigung zum schreiben PDOErrors.txt? Ist es Apache oder PHP (oder beides) ?
- Hat das Konzept von unix-ähnlichen
root
Konto-Faktor-irgendwo hier ?
Edit: ich aktualisiert, diese zu reflektieren, dass es nicht das folderxyz, dass ich mich ändern musste CHMOD Einstellungen. Ich hatte zum ändern der Einstellungen für die Datei PDOErrors.txt
OP hier: für die Zukunft, habe ich eine parallele Frage für die Linux-Plattform hier (mit einer begleitenden intuitive Erklärung, was Los ist): https://stackoverflow.com/questions/31389892/why-is-the-output-www-data-in-one-case-and-root-in-another
- Ich hinzufügen möchten für die Zukunft, die folgenden Stackoverflow-Antwort erklärt, warum der Apache-user zeigt sich als
daemon
auf einem lokalen Rechner, in der Erwägung, dasswww-data
auf einem öffentlich zugänglichen Rechner (D. H., nutzbar von jedermann über das internet). Ich schaute auf die Einstellungen in der Apache -httpd.conf
Datei in meinem lokalen Maschine und deruser
undgroup
Einstellungen waren zwar gesetzt, umdaemon
: stackoverflow.com/questions/26063556/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
get_current_user()
(soll) Rendite für den Eigentümer der Datei, diefirstnamelastname
in diesem Fall. Dort berichtet worden, die Probleme, die diese Funktion unterscheidet sich zwischen Plattformen jedoch. Als solche, würde ich nicht Vertrauen, die seine Ausgabe.daemon
ist der user-Apache läuft als.ls -la
im Verzeichnis Skripts in zu finden, der Benutzer und die Gruppe zu der die Datei gehört.firstnamelastname
(+rw
).+rx
(ausführen und Lesen) fürdaemon
und für die PHP-Datei,+r
(Lesen). Bei meiner installation von XAMMP, Sie haben das getan, indem man alles inhtdocs
als öffentlich lesbar, sodaemon
kann es Lesen, aber nicht schreiben.htdocs
oderwww
- Verzeichnis. Es füllt die Rolle des klassischen unix-root-Benutzer.Hier finden Sie einige Informationen über den Datei Eigentümer/- Gruppen und die Prozess-Verantwortlicher:
Wenn Sie wollten, um eine Datei beschreibbar durch die daemon-Benutzer sind, können Sie erstellen Sie einen neuen Ordner und nennen Sie es als der Besitzer mit der Gruppe
admin
(so kann man es auch benutzen), und geben Sie es+rwx
für den Benutzer und die Gruppe, mit+rx
für die öffentlichkeit: