別のユーザーとしてコマンドを 1 回実行します。
sudo -u www-data php script.php
これは root の場合に機能するはずです .
常に php を www-data として実行する場合 、いくつかの可能性があります。簡単なラッパー シェルスクリプトを作成できます。 /usr/bin/php の場合 /usr/bin/php5 へのソフトリンクのみです または同様の、それはそれをより簡単にします。ソフトリンクを置き換えるだけです(ファイル php5 ではありません) ) このようなスクリプトで:
#!/bin/sh
sudo -u www-data php5 $*
return $?
ただし、それはテストされていません。また、これは常に php5 を実行しようとすることに注意してください ユーザー www-data として 、たとえユーザーが root でなくても そのための許可がない場合があります。また、それはあなたが本当に望んでいるものではないかもしれません。 php を実行しようとすると、一部のインストール済みサービスで問題が発生する場合があります。
それをルートにのみ適用する(おそらくより良い)解決策は、ソフトリンク /usr/bin/php を残すことかもしれません 単独で、スクリプトを /root/bin に配置します 代わりは。次に、そのフォルダを .bashrc 経由で PATH に追加します 、 .profile または類似。 /etc/skel/.profile がある場合 、それがどのように行われるかを指摘するかもしれません:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
これが .bashrc に入ったら 、 .profile または同様に、新しいシェルを開くたびに、$HOME/bin で任意の実行可能ファイル (+x) を直接実行できます。 (/root/bin ルート用)
ヒント:ラッパー スクリプトに phpwww のような名前を付けるとよいでしょう。 php script.php を明示的に指定します または phpwww script.php 通常の php と sudo された php のどちらが必要かを決定します。
もう 1 つの解決策は、単純なエイリアスです。これを .bashrc に配置します 、 .profile または類似:
alias phpwww='sudo -u www-data php'