1

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

我是否必须做一些事情才能从浏览器访问 DBus?

4

2 回答 2

0

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

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

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

当您通过浏览器运行它时,这可能会输出例如apache ,当您通过 CLI 运行它时可能会输出myusername

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

另请参阅此问题以获取更多提示: Running command-line application from PHP as specific user

于 2012-07-04T07:32:06.840 回答
0

在 Web 服务器(如 Apache)上执行的 PHP 根本无法执行 D-Bus 请求。我尝试了几天没有成功。这是因为 Web 服务器用户(如www-data)无法dbus-daemon通过连接访问session

作为一种解决方法,我使用React内置的HTTP 服务器作为代理。

于 2014-08-07T11:51:39.300 回答