2012-07-04 178 views
1

我写了一小段php代码,可以通过命令行访问DBus。但是当我从浏览器运行php代码时,dbus部分不起作用。用php通过浏览器访问DBus

为了从浏览器访问DBus,我必须做些什么吗?

回答

0

通过Web服务器调用时,PHP不一定使用相同的用户,因此与通过命令行调用时相比,它们具有相同的权限。

尝试在浏览器中,然后通过在命令行中运行以下脚本:

<?php echo exec('whoami'); ?> 

这可能输出例如apache用于当您通过浏览器运行时,以及myusername当您通过CLI运行时。

因此,您需要更改Web服务器运行的用户的权限,以允许其运行DBus命令。你如何做到这一点将取决于你的操作系统。

也看到更多的提示这样一个问题:一个Web服务器(如Apache)上执行 Running command-line application from PHP as specific user

0

PHP不能做d-Bus的请求都没有。我试了几天没有成功。这是因为Web服务器用户(如www-data)无法通过session连接访问dbus-daemon

作为解决方法,我使用React内置HTTP server作为代理。