我的桌面上运行着 Rhythmbox,我希望能够通过 Web 界面远程控制它。但是,我在访问它时遇到问题,因为rhythmbox-client
抱怨尝试访问它的用户(www-data)没有 a) X 会话正在运行,并且 b) 无权访问我的节奏盒 dbus信息。
(rhythmbox-client:13954): Rhythmbox-WARNING **: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
我在 ubuntu 10.04 上运行 apache、php。通过从不同用户的 php cli 调用 php 脚本也尝试了以下方法(与不同用户一起进入我自己的盒子)
我试过这些方法:
- 使用“rhythmbox-client --print-playing --no-start --no-resent”从 php 脚本调用 system() 和 exec()
- 直接在 php 中使用 DBus 以及 python 脚本(使用 system()/exec() 从 php 脚本调用它)
- 在 C 程序中使用
setuid()
,setruid()
,seteuid()
并通过 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