我在桌面上运行Rhythmbox,我希望能够通过Web界面远程控制它。但是,我在访问它时遇到了问题,因为rhythmbox-client
抱怨尝试访问它的用户(www-data)没有a)运行X会话,而b)没有访问我的rhythmbox 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脚本也尝试了以下方法(使用不同的用户ssh到我自己的盒子中)
我尝试过这些方法:
setuid()
,setruid()
,seteuid()
并通过php调用它。我现在不知所措。这甚至可能吗?
[编辑] 我使用了@ 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
答案 0 :(得分:0)
给出了类似的问题和Python解决方案here。根本问题似乎是system()和exec()没有设置正确的环境变量。您可以使用PHP http://us.php.net/manual/en/function.proc-open.php为PHP生成的进程设置环境变量。