У меня есть Rhythmbox, работающий на моем рабочем столе, и я хочу иметь возможность управлять им удаленно через веб-интерфейс. Однако у меня возникают проблемы с его доступом, потому что rhythmbox-client
жалуется, что пользователь (www-data), который пытается получить к нему доступ, не имеет а) в качестве сеанса X, а b) не имеет доступа к моему ритм-боксу dbus.получить информацию о rhythmbox от другого пользователя
(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 из другого пользователя (sshing в мой собственный ящик с другим пользователем)
Я пробовал эти подходы:
- вызова системы () и exec() из скрипта php с «rhythmbox-client -print-playing -no-start -no-resent»
- с использованием DBus непосредственно в php, а также скрипт python (вызов его из php сценарий с системой()/exec())
- с использованием
setuid()
,setruid()
,seteuid()
в программе на языке C и называя его через php.
Сейчас я в затруднении. Возможно ли это?
[EDIT] Я использовал предложение @ IvanGoneKrazy и принял код окружения от this similar question. Теперь у меня есть этот код с этим сообщением об ошибке: сообщение
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