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