user として明示的に、php ファイル (ユーザー: www-data) から sudo 権限でコマンドを起動する必要がありますwww-data
。
<?php
$command = 'sudo -u www-data /usr/bin/python3 /var/www/html/script.py';
shell_exec($command);
?>
sudo を使用できるようにするには、次のようwww-data
にコマンドを sudoers ( sudo visudo
) に入れたい:
www-data ALL=NOPASSWD: sudo -u www-data /usr/bin/python3 /var/www/html/script.py
また
www-data ALL=NOPASSWD: -u www-data /usr/bin/python3 /var/www/html/script.py
しかし、構文が間違っています (visudo からのエラー メッセージ)。以下はsudoersでの作業です(正しい構文)
www-data ALL=NOPASSWD: /usr/bin/python3 /var/www/html/script.py
しかし、私のスクリプトでは機能しません (ログファイルの apache エラー):
Sorry, user www-data is not allowed to execute '/usr/bin/python3 /var/www/html/script.py' as www-data on raspberrypi.
必要なようsudo -u www-data
です。どうすればこれを解決できますか?