Exécutez une commande en tant qu'autre utilisateur une fois:
sudo -u www-data php script.php
Cela devrait fonctionner si vous l'êtes root.
Quant à toujours exécuter php as www-data, il existe plusieurs possibilités. Vous pouvez créer un script shell simple. Si ce /usr/bin/phpn'est qu'un lien logiciel vers /usr/bin/php5ou similaire, cela le rend plus simple. Remplacez simplement le lien logiciel (PAS le fichier php5) par un script comme celui-ci:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Ce n'est pas testé cependant. Sachez également que cela tentera TOUJOURS de s'exécuter en php5tant qu'utilisateur www-data, même si l'utilisateur peut ne pas être rootet ne pas être autorisé à le faire. Et ce n'est peut-être pas ce que vous voulez vraiment. Certains services installés peuvent rencontrer des problèmes lors de l'exécution de php.
Une solution (peut-être meilleure) pour n'appliquer cela qu'à root peut être de laisser le soft-link /usr/bin/phpseul et de placer le script à la /root/binplace. Ajoutez ensuite ce dossier à PATH via .bashrc, .profileou similaire. Si c'est le cas /etc/skel/.profile, cela peut indiquer comment cela se fait:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Une fois que cela est dans votre .bashrc, .profileou similaire, chaque nouveau shell que vous ouvrez vous permettra d'exécuter directement tous les exécutables (+ x) dans $HOME/bin( /root/binpour root).
Astuce: Vous voudrez peut-être nommer le script de wrapper quelque chose comme phpwwwça, vous spécifiez donc explicitement php script.phpou phpwww script.phpdécidez si vous voulez un php régulier ou sudo'ed.
Une autre solution est un simple alias. Placez ceci dans votre .bashrc, .profileou similaire:
alias phpwww='sudo -u www-data php'