私はコマンドが実際に実行されていると仮定していますが、Asteriskに接続できず、Webサーバーを実行しているユーザーにAsteriskに接続する権限がないため、reloadコマンドを発行できません。
2つのソリューション。最初のものが推奨されます。
www-data (asterisk) NOPASSWD: /usr/sbin/asterisk -rx reload
そしてあなたはsystem()
に渡すコマンドとしてこれを使用します:
asterisk
ユーザーとして特定のコマンド「
asterisk -rx reload
」を実行するために、Webサーバーのユーザーを許可する
sudoの
設定sudo
system("sudo -u asterisk /usr/sbin/asterisk -rx reload");
ソケット許可
asterisk -r
は、UNIXドメインソケットを使用してアスタリスクサーバーに接続します。ソケットの位置はシステムによって異なる場合がありますが、/var/run/asterisk.ctl
のようなものがあります。既定では、このソケットのアクセス許可はおそらくasterisk
ユーザー(またはルート)のみが接続できるように設定されています。
Webサーバーユーザーがこのソケットを読み書きする権限を持つようにする必要があります。たとえば、ソケットのへのchmod
ソケットを使用して、システム上の任意のユーザーが使用できるようにすることができます。 (システム上で信頼されていないユーザーがいる場合は、これを行わないでください!)または、このソケットに許可グループの書き込み権限を与え、Webサーバーが実行するグループにchgrp
権限を与えることができます。
アスタリスクサーバーの代わりに潜在的に危険なアクションを実行する権限を許可していることに注意してください。
コマンドが実行されていませんか?たぶんWebサーバーにアスタリスクのリロードを行う権限がないだけかもしれません。 – Celada
と私はどのようにWebサービスにアスタリスクのリロードを行う権限を与えることができますか?助けが要る。どうも!!!私はこのものの初心者です –
webserviceを実行するユーザーはどれですか? "chmod + x" consoleコマンドで特権を与える必要があります。 –