1. ホーム
  2. php

[解決済み] PythonスクリプトをPhpから実行する

2022-02-17 21:42:47

質問

ラズベリーパイで、2つのボタン(オンとオフ)のあるPHPのウェブページを持っています。 オンボタンのボタンはOn.phpにリダイレクトされます。 オフボタンはOff.phpにリダイレクトされます。 usr/lib/cgi-bin" に、実行したい python スクリプトがあります (script.py) ターミナルから次のように入力すれば、完璧に実行できます。

cd /usr/lib/cgi-bin
sudo python script.py

ターミナルからやるとうまくいくのですが。

問題は、私の "/var/www" フォルダにある PHP ファイル (On.php) です。 これは私が書いたものです。

<?php
exec('cd /usr/lib/cgi-bin');
exec('sudo python script.py');
?>

なぜターミナルからはスクリプトが実行されるのに、私のPHPからは実行されないのですか?

どうすればいいですか?

PHPスクリプトからsudoを使用することはできません。Apacheはあるユーザー(www-data一般)から実行されているので、このファイルを編集してください。 /etc/sudoers

そして、次の行を追加します。

www-data ALL=(ALL) NOPASSWD:ALL

注意!これはPHPスクリプトから呼び出されるすべての関数を許可するもので、スクリプトやPythonコマンドで "ALL" を変更することができます。

次に、execコマンドでユーザーを指定します。

<?php
exec('sudo -u www-data python /usr/lib/cgi-bin/script.py')