通过浏览器使用 php 访问 DBus


Accessing DBus with php through browser

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

我是否必须执行某些操作才能从浏览器访问 DBus?

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

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

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

例如,当您通过浏览器运行时输出 apache,当您通过 CLI 运行时输出 myusername 时。

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

另请参阅此问题以获取更多提示:以特定用户身份从 PHP 运行命令行应用程序

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

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