получить информацию о ритме от другого пользователя - PullRequest
1 голос
/ 24 сентября 2010

У меня на рабочем столе запущен 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

1 Ответ

0 голосов
/ 24 сентября 2010

Аналогичная проблема и решение Python для даны здесь .Основная проблема заключается в том, что system () и exec () не имеют правильных установленных переменных окружения.Вы можете использовать PHP http://us.php.net/manual/en/function.proc-open.php, чтобы установить переменные окружения для вашего процесса PHP.

...