我编写了一小部分 php 代码,可以通过命令行访问 DBus。但是当我从浏览器运行 php 代码时,dbus 部分不起作用。
我是否必须做一些事情才能从浏览器访问 DBus?
通过 Web 服务器调用时,PHP 不一定使用相同的用户,因此与通过命令行调用时相比具有相同的权限。
尝试在浏览器中运行以下脚本,然后通过命令行:
<?php echo exec('whoami'); ?>
当您通过浏览器运行它时,这可能会输出例如apache ,当您通过 CLI 运行它时可能会输出myusername。
因此,您需要更改您的网络服务器正在运行的用户的权限,以允许它运行 DBus 命令。你如何做到这一点将取决于你的操作系统。
另请参阅此问题以获取更多提示: Running command-line application from PHP as specific user