Führen Sie einen Befehl einmal als anderer Benutzer aus:
sudo -u www-data php script.php
Dies sollte funktionieren, wenn Sie es sind root.
Da immer PHP as ausgeführt wird www-data, gibt es mehrere Möglichkeiten. Sie können ein einfaches Wrapper-Shellscript erstellen. Wenn /usr/bin/phpes sich nur um einen Softlink /usr/bin/php5oder ähnliches handelt, ist dies einfacher. Ersetzen Sie einfach den Softlink (NICHT die Datei php5) durch ein Skript wie das folgende:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Das ist aber nicht getestet. Beachten Sie auch, dass dies IMMER versucht, php5als Benutzer ausgeführt zu werden www-data, auch wenn der Benutzer möglicherweise nicht rootdazu berechtigt ist. Und es kann auch nicht das sein, was Sie wirklich wollen. Einige installierte Dienste können beim Versuch, PHP auszuführen, auf Probleme stoßen.
Eine (möglicherweise bessere) Lösung, um dies nur auf root anzuwenden, besteht darin, den Softlink in /usr/bin/phpRuhe zu lassen und /root/binstattdessen das Skript zu platzieren. Dann fügen Sie diesen Ordner auf PATH über .bashrc, .profileoder ähnliches. Wenn ja /etc/skel/.profile, kann dies darauf hinweisen, wie das gemacht wird:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Sobald diese in Ihrer ist .bashrc, .profileoder ähnliches, wird jede neue Shell Sie öffnen können Sie alle ausführbaren Dateien direkt ausführen (+ x) in $HOME/bin( /root/binfür root).
Tipp: Möglicherweise möchten Sie das Wrapper-Skript so benennen, phpwwwdass Sie es explizit angeben php script.phpoder phpwww script.phpentscheiden, ob Sie reguläres oder sudo'ed PHP möchten.
Eine andere Lösung ist ein einfacher Alias. Legen Sie diese in Ihrem .bashrc, .profileoder ähnlich:
alias phpwww='sudo -u www-data php'