Есть форма на html, которая через js отправляет данные в php файл. В этом php файле есть функция shell_exec,
shell_exec(escapeshellcmd('python script.py 1'));
которая передает команду для запуска скрипта на python. Когда пытаюсь обработать в python скрипте простую команду, типа
print(sys.argv[1])
, то соответственно получаю на веб странице результат "1". Но когда дело доходит до работы с GPIO Raspberry Pi 3, то скрипт не выполняется. Даже не выполняется команда print, которую я оставил в конце скрипта для тестирования.
index.html
<!doctype html>
<head>
<title>Title</title>
</head>
<body>
<form id="form">
<p>On/Off led control</p>
<input type="checkbox" name="led-toggle" id="led-toggle" value="1">
</form>
<script>
const ledToggle = document.querySelector('#led-toggle');
async function formSend(evt) {
const form = document.querySelector('#form');
let data = new FormData(form);
console.log(data)
let response = await fetch("./index.php", {
method: 'post',
body: data
});
if (response.ok) {
let result = await response.json();
console.log(result)
}
}
ledToggle.addEventListener('change', formSend);
</script>
</body>
index.php:
if ($_POST['led-toggle']) {
shell_exec(escapeshellcmd('python test.py 1'));
} else {
shell_exec(escapeshellcmd('python test.py 0'));
}
test.py
import sys
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(5, GPIO.OUT)
GPIO.output(5, sys.argv[1])
print(sys.argv[1])