KazuProg's notes

技術メモや備忘録などを自由気ままに書き連ねています

PHPからsudoコマンドを実行する方法

作成日: ・ 更新日:

Raspberry Piの設定変更をWebブラウザ上から行うために、 PHPからsudoコマンドを実行したかったので、その設定を備忘録として残しておきます。

まずは、Apacheのユーザにパスワードを設定します。

私の環境では、「www-data」というユーザでしたので、以下のコマンドを入力してパスワードを設定します。

$ sudo passwd www-data

次に、Apacheユーザにsudoコマンド実行の権限を与えます。

$ sudo visudo

すると、編集画面が出てきますので、以下の行を追記してください。

apache  ALL=(ALL)       ALL

以上で、設定は終了です。

今度は、PHPからコマンドを実行する方法です。

PHPからは、以下のように実行します。

<?php
  $results = shell_exec("echo 'パスワード' | sudo -S [実行したいコマンド]");
  echo $results;
?>

汎用性を持たせるために、関数にします。

<?php
function sudo_shell_exec($command){
  return shell_exec("echo 'パスワード' | sudo -S {$command}");
}
?>

これで、PHPからsudoコマンドを実行できるようになりました。