我的覆盆子pi上有一個PHP網頁,帶有2個按鈕(打開和關閉)
按鈕按鈕重定向到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).
這就是我寫的:
exec('cd /usr/lib/cgi-bin');
exec('sudo python script.py');
?>
為什麼腳本從終端執行,而不是從我的PHP執行?
解決方法:
您不能使用PHP腳本中的sudo. Apache正在從使用者運作(www-data generaly),是以編輯此檔案:/ etc / sudoers
然後添加以下行:
www-data ALL=(ALL) NOPASSWD:ALL
小心!這将授權所有函數由PHP腳本調用,您可以通過腳本或Python指令調整更改“ALL”.
然後在exec指令中确定使用者的精确度:
exec('sudo -u www-data python /usr/lib/cgi-bin/script.py')
标簽:python,php,raspberry-pi,apache2,execute
來源: https://codeday.me/bug/20190923/1815634.html