これはサーバーにSSH接続されているときには機能するかもしれませんが。ウェブサーバーのユーザーは、ログインしたユーザーとは異なる可能性があります。 WebサーバーがLinuxマシン上で実行するような一般的なユーザーID /グループは、http、www-data、nobodyなどです。
ここから2つの選択肢があります。
あなたは(もしあれば、それの子のすべて)を使用すると、PHPから実行しようとしているスクリプトはWebサーバのユーザーが実行することが可能であることを確認することができます。
webserverユーザにそのスクリプトの権限のみを昇格させるアクセス権を与える/ etc/sudoersファイルを変更することができます。 (注:潜在的にセキュリティホールを開くので、注意してください)。
この実行すると、あなたのウェブサーバが実行されますどのようなユーザーを見つけるために:ps aux
は出力を見て、出力の最初の列は、そのプロセスがで実行されていることをユーザーに示していますが。ここに私のボックスのいずれかに私のウェブサーバ(nginxの)の抜粋です:
www-data 26852 0.0 0.0 29768 3840 ? S Jun04 0:50 nginx: worker process
あなたはそのnginxのは、ここでユーザーのWWW-データで実行されます見ることができます。 grepコマンドを実行すると、プロセスをより早く見つけるのに役立ちます。 Grepはあなたに送るものと一致する行だけを表示します。ここに例があります:ps aux | grep nginx
ここで、Webサーバーがどのユーザーとして実行されているかを知っているので、そのユーザーにスクリプトへのアクセスを許可してみましょう。スクリプトがfoo
で、/usr/local/bin
にあるとします。あなたは、次のコマンドを実行します:
chown www-data /usr/local/bin/foo
ファイルに所有権を変更した後、あなたのPHPページから再度コマンドを再実行し、それが動作するかどうかを確認してみてください。
私はあなたのウェブサーバーのユーザーにそのファイルへのsudo特権を与えることができるとも言いました。次に、あなたはshell_execコマンドは、これに切り替えることができ
www-data ALL= NOPASSWD: /usr/local/bin/foo
:あなたの/etc/sudoers
ファイルの末尾に以下の行を追加する必要があることを行うために
shell_exec('sudo /usr/local/bin/foo');
を覚えておいてください。これを行うと、ウェブサーバーのユーザーはroot
というスクリプトを実行することができ、これはさまざまな状況で非常に危険です。ただし、カメラの動作には高い権限が必要な場合があります。私はあなたが呼び出しようとしているカメラの設定にどのような権限要件があるのか分かりません。
幸運。お役に立てれば!
すべての出力を/ dev/nullにリダイレクトしているので、何も返されません。 –
ok .../dev/nullの部分を削除しました...エラーが発生しました....まだカメラはサーバー(アーチ)で起動していません.... –
Webサーバーのユーザーは、そのファイルを実行する権利? –