Я использую Apache на своем локальном хосте.Из PHP-скрипта, запущенного от имени пользователя www, я хотел бы управлять воспроизведением Rhythmbox на моей машине.Пока у меня есть простая команда в моем PHP-скрипте:
exec('rhythmbox-client --pause');
Это прекрасно работает, когда я запускаю его из командной строки, как я, но если он запускается как пользователь wwwЯ предполагаю, что rhythmbox-client
не знает / не может получить доступ к моему экземпляру Rhythmbox.
Есть ли простой способ для того, чтобы этот PHP-скрипт работал как мой пользователь, а не как www-пользователь, или сказать rhythmbox-client
каким экземпляром управлять?
В целом приложение состоит в том, что, когда мой телефон снимает трубку, он вызывает мой PHP-скрипт, который приостанавливает воспроизведение музыки и возобновляет воспроизведение, когда телефон находится на линии.Я люблю VoIP-телефоны!
Решение: Благодаря Carpetsmoker и Tarek я использовал sudo
в качестве ответа, но возникла пара проблем.Чтобы преодолеть их, я сделал следующее:
Создал скрипт bash для вызова rhythmbox-client
.Этот сценарий bash был выполнен с использованием sudo
в PHP, как описано в ответе ниже.К сожалению, rhythmbox-client
не знал, какую среду контролировать, поэтому скрипт bash выглядит следующим образом:
#! /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
Теперь этот скрипт bash может быть выполнен с помощью PHP и wwwuser, и мой телефон может приостановить / воспроизвести моймузыка!