8

シェルコマンドを実行してその出力を返すphpスクリプトを作成したいと思います。サーバーには秘密鍵が必要です。これを最初にテストすることにしたとき、私はこれを作成しました:

<?php
$command = "ls";
$output = shell_exec($command);
echo "<pre>$output</pre>";
?>

それはうまくいきました。しかし$command、コマンドに変更したとき、私は本当に実行したかったのです。

$command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig";

それは私にこの出力を与えました:

You need root privileges to run this script

私の推測では、を使用する必要がありますsudo。もちろん、これにはpemファイルをサーバーのどこかに配置する必要があります。私がそうすると仮定すると、正確にはどうあるべき$commandですか?shell_exec()、、または他のものを使用する必要がexec()ありsystem()ますか?

4

2 に答える 2

4

スクリプトを開始するためにどのphp関数を使用するかは重要ではありません。不足しているのは、ユーザーアカウントの認証です。

sudoを使用するか(Webサーバーユーザーがパスワードなしで正確なコマンドを実行するように事前設定し、コマンドの前に)visudoを付けるsudoか、コマンドを自分で実行するsetuidスクリプトを設定します。

于 2011-07-13T21:42:23.910 に答える
3

実際に行う必要があるのは、特定のユーザー(たとえば、「nobody」以外)として実行するようにWebサーバーを設定するか、実行するユーザーにそのユーザーのアクセス許可を与えることです。

参照: PHP shell_exec()およびsudo:setuidrootである必要があります

于 2011-07-13T21:27:56.033 に答える