我在本地主機上運行Apache。從一個以www用戶身份運行的PHP腳本中,我想在我的機器上控制Rhythmbox播放。到目前爲止,我在我的PHP腳本有一個簡單的命令:以特定用戶身份從PHP運行命令行應用程序
exec('rhythmbox-client --pause');
,當我在命令行中我跑它這個偉大的工程,但如果它運行作爲WWW的用戶我想rhythmbox-client
不知道/不能訪問我的Rhythmbox實例。
是否有一個簡單的方法讓PHP腳本以我的用戶而不是www用戶身份運行,或告訴rhythmbox-client
哪個實例要控制?
整體應用是當我的手機摘機時,它會調用我的PHP腳本暫停音樂,並在手機掛機時恢復播放。我愛VoIP電話!
解決方案: 感謝Carpetsmoker和塔裏克我以前sudo
的答案,但有幾個問題。爲了克服它們,我做了以下操作:
創建了一個bash腳本來呼叫rhythmbox-client
。這個bash腳本是在PHP中使用sudo
執行的,如下面的答案中所述。不幸的是rhythmbox-client
不知道該管什麼環境,所以bash腳本是這樣的:
#! /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執行,我的手機可以暫停/播放我的音樂!
如何嘗試運行rhythmbox-client不作爲根? – genesis
你打算只在本地運行你的服務器嗎? (又名從未把它在線) – afuzzyllama
@afuzzyllama是的,它只是在本地 – Tak