내 로컬 호스트에서 Apache를 실행하고 있습니다. www 사용자로 실행되는 PHP 스크립트에서 내 컴퓨터의 Rhythmbox 재생을 제어하고 싶습니다. 나는 나 같은 명령 줄에서 실행할 때이 위대한 작품을PHP에서 특정 사용자로 명령 줄 응용 프로그램 실행
exec('rhythmbox-client --pause');
하지만 www가 사용자로 실행하면 나는 rhythmbox-client
하지 않는 것 같아요 : 지금까지 나는 내 PHP 스크립트에 간단한 명령을 Rhythmbox의 내 인스턴스에 액세스 할 수 없다는 사실을 알고 있습니다.
www- 사용자가 아닌 내 사용자로 PHP 스크립트를 실행할 수있는 쉬운 방법이 있습니까? rhythmbox-client
을 제어 할 인스턴스가 있습니까?
전반적인 응용 프로그램은 휴대 전화가 오프 훅 상태가되면 음악을 일시 중지하는 PHP 스크립트를 호출하고 전화가 온훅 상태 일 때 재생을 다시 시작한다는 것입니다. 나는 VoIP 폰을 좋아한다!
솔루션 : 나는 대답으로 sudo
을 사용하지만, 몇 가지 문제가 있었다 감사 Carpetsmoker와 타렉에. 이를 극복하기 위해 다음을 수행했습니다.
rhythmbox-client
을 호출하는 bash 스크립트가 작성되었습니다. 이 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 not-as-root는 어떨까요? – genesis
서버를 로컬에서만 실행 하시겠습니까? (일명 결코 그것을 온라인에 두지 않음) – afuzzyllama
@afuzzyllama 네, 단지 로컬입니다. – Tak