特定のユーザーとして PHP から Rhythmbox 再生を制御する
Web 開発の領域では、多くの場合、外部コマンドと対話する必要があります。 PHP スクリプトからのラインアプリケーション。ただし、Web サーバー上で実行する場合、PHP は通常、特定のユーザーの限られた権限で動作するため、高い権限を必要とするアプリケーションやプロセスにアクセスするときに障害が生じる可能性があります。
Rhythmbox を制御するシナリオを検討してください。 www-user として実行されている PHP スクリプトからマシン上で再生します。単純なアプローチでは、exec() 関数を利用してリズムボックス クライアント コマンドを実行します。
<code class="php">exec('rhythmbox-client --pause');</code>
このアプローチは、コマンド ラインから独自のユーザーとしてコマンドを実行する場合は成功しますが、失敗します。 www-userとして実行した場合。これは、rhythmbox クライアントが Rhythmbox のインスタンスを認識またはアクセスできないためです。
この制限を克服するには、sudo の機能を利用して PHP スクリプトの権限を昇格できます。 sudo を使用すると、特定のユーザーとして rhythmbox-client コマンドを実行し、目的の Rhythmbox インスタンスと対話するために必要な権限を付与できます。
このソリューションを実装するには、次の手順に従います。
<code class="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</code>
このスクリプトは DBUS アドレスを解決します。正しい Rhythmbox インスタンスがターゲットになっていることを確認します。
wwwuser ALL=/usr/bin/rhythmbox-client
これにより、www-user は昇格された権限で、rhythmbox-client コマンドのみを実行できるようになります。
<code class="php">exec('sudo -u myuser /path/to/bashscript.sh');</code>
これらの手順に従うことで、指定したユーザーとして Rhythmbox の再生を制御する機能を PHP スクリプトに付与し、Rhythmbox の再生を制御できるようになり、外部アプリケーションと VoIP 電話システムとのシームレスな統合。
以上が特定のユーザーとして PHP から Rhythmbox の再生を制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。