Exécuter des applications en ligne de commande à partir de PHP à l'aide d'un utilisateur spécifique
Pour contrôler la lecture de Rhythmbox à partir d'un script PHP exécuté en tant qu'utilisateur www, il est Il est crucial que l'application s'exécute en tant qu'utilisateur prévu plutôt qu'en tant qu'utilisateur www par défaut. Une solution efficace consiste à utiliser sudo.
En tirant parti de sudo, le script PHP peut appeler la commande rythmebox-client avec des privilèges élevés. Cependant, pour garantir que seules des commandes spécifiques sont autorisées, il est conseillé de configurer le fichier sudoers en conséquence. Par exemple :
wwwuser ALL=/usr/bin/rhythmbox-client
En limitant l'invocation sudo à une commande spécifique, vous pouvez sécuriser votre environnement et empêcher Apache d'exécuter des commandes arbitraires.
Dans les cas où le client Rhythmbox peut avoir du mal à identifiez l'instance correcte à contrôler, envisagez de créer un script bash pour établir l'environnement approprié et exécuter la commande. Le script ci-dessous illustre cette approche :
#! /bin/bash DBUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/*/environ 2> /dev/null| sed 's/DBUS/\nDBUS/g' | tail -n 1` if [ "x$DBUS_ADDRESS" != "x" ]; then export $DBUS_ADDRESS /usr/bin/rhythmbox-client --pause fi
En intégrant ce script dans l'exécution PHP, vous pouvez accorder à wwwuser la possibilité de contrôler la lecture de manière ciblée, activant la fonctionnalité souhaitée de pause de la musique lors de la prise du téléphone et je le reprends une fois raccroché.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!