以特定用户身份从 PHP 运行命令行应用程序
我正在本地主机上运行Apache。从以www用户身份运行的PHP脚本中,我想控制我的机器上的Rhythmbox播放。到目前为止,我在PHP脚本中有一个简单的命令:
exec('rhythmbox-client --pause');
当我以我的身份从命令行运行它时,这很有效,但是如果它以www-user身份运行,我想不知道/无法访问我的Rhythmbox实例。rhythmbox-client
有没有一种简单的方法可以让该PHP脚本以我的用户身份而不是www-user运行,或者告诉要控制哪个实例?rhythmbox-client
整个应用程序是,当我的手机脱钩时,它会调用我的PHP脚本,该脚本会暂停音乐,并在手机上钩时恢复播放。我喜欢VoIP电话!
溶液:感谢Carpetsmoker和Tarek,我用了作为答案,但有几个问题。为了克服它们,我做了以下工作:sudo
创建了一个 bash 脚本来调用 。这个bash脚本是在PHP中使用的,如下面的答案中所述。不幸的是,不知道要控制什么环境,所以bash脚本看起来像这样:rhythmbox-client
sudo
rhythmbox-client
#! /bin/bash
DBUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/*/environ 2> /dev/null| sed 's/DBUS/\nDBUS/g' | tail -n 1`
if [ "x$DBUS_ADDRESS" != "x" ]; then
export $DBUS_ADDRESS
/usr/bin/rhythmbox-client --pause
fi
现在,bash脚本可以通过PHP和wwwuser执行,我的手机可以暂停/播放我的音乐!