У меня на рабочем столе запущен Rhythmbox, и я хочу иметь возможность удаленно управлять им через веб-интерфейс.Однако у меня возникают проблемы с доступом к нему, потому что rhythmbox-client
жалуется на то, что пользователь (www-данные), пытающийся получить к нему доступ, не имеет а) запущенного сеанса X и б) не имеет доступа кмой rhythmbox dbus.
(rhythmbox-client:13954): Rhythmbox-WARNING **: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
Я использую Apache, PHP на Ubuntu 10.04.Следующие методы также были опробованы путем вызова php-скрипта через php cli от другого пользователя (скачав в мою собственную коробку с другим пользователем)
Я попробовал эти подходы:
- вызов system () и exec () из сценария php с помощью команды «rhythmbox-client - printprint» - no-start --no-resent »
- с использованием DBus непосредственно в php, а такжескрипт Python (вызывая его из скрипта php с помощью system () / exec ())
- , используя
setuid()
, setruid()
, seteuid()
в программе на C, и вызывая его через php.
Сейчас я в растерянности.Это вообще возможно?
[ПРАВИТЬ] Я воспользовался предложением @ IvanGoneKrazy и взял код окружения из этого похожего вопроса .Теперь у меня есть этот код с этим сообщением об ошибке:
import subprocess, os
p = subprocess.Popen('dbus-launch', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for var in p.stdout:
sp = var.split('=', 1)
os.environ[sp[0]] = sp[1][:-1]
os.system('rhythmbox-client --print-playing')
сообщение об ошибке:
(rhythmbox-client:15377): Rhythmbox-WARNING **: Launch helper exited with unknown return code 1