我正在尝试从PHP程序连接到DBus。
当我从命令行运行程序时,它可以工作,但是当它由Apache webserver运行时(以用户apache
运行),它无法连接到总线。
我尝试使用qdbus
调用system
并使用python-dbus调用Python脚本,但它无论如何都不起作用。此外,我无法编译this PHP extension,但我认为它不会解决我的问题。
我认为问题在于提供会话总线的DBus守护程序作为我的用户运行(系统总线运行为messagebus
),但PHP运行为apache
。
如何连接到其他用户的总线?
(This对我不起作用。)
答案 0 :(得分:0)
首先,你有一个你试图打电话的dbus方法吗? Dbus只是传输层,你需要一个托管dbus方法的程序和一个调用dbus方法的程序。我假设您有一个想要从php程序调用的dbus方法。
apache如何尝试调用您的dbus方法?如果你使用system()方法或类似的PHP来调用qdbus,那将失败。 PHP由apache运行,apache没有像你的用户那样的自动登录进程,也没有X11访问权限。这意味着为了让你的apache拥有dbus,你必须使用:
eval 'dbus-launch --auto-syntax' [command]
使用PHP的系统()时。但这并非最佳。
有些解决方案是: