PHP для выполнения скриптов Python для GPIO

Я нашел этот код где-нибудь, который может выполнять скрипты Python из PHP.

Я установил apache2 на Pi, и я могу получить доступ к скрипту PHP. Но когда я нажимаю кнопки HTML, ничего не происходит! : (

Когда я запускаю скрипт python через SSH, он работает. Поэтому нет ничего плохого в сценариях python, которые я думаю.

Я использую WebIOPi для контроля состояния контактов GPIO.

Какая ошибка?

PS: Я знаю, что это не может быть очень безопасным подходом к управлению GPIO. Я просто хочу попробовать, хотя:)

ТИА.

<html>
<head>
<?php 
if (isset($_POST['RedON']))
{
exec('sudo python /var/www/red_on.py');
}
if (isset($_POST['RedOFF']))
{
exec('sudo python /var/www/red_off.py');
}
if (isset($_POST['YellowON']))
{
exec('sudo python /var/www/gpio/yellow_on.py');
}
if (isset($_POST['YellowOFF']))
{
exec('sudo python /var/www/gpio/yellow_off.py');
}
if (isset($_POST['GreenON']))
{
exec('sudo python /var/www/gpio/green_on.py');
}
if (isset($_POST['GreenOFF']))
{
exec('sudo python /var/www/gpio/green_off.py');
}
?>

  <title></title>
</head>
<body>
<form method="post">
  <table
 style="width: 75%; text-align: left; margin-left: auto; margin-right: auto;"
 border="0" cellpadding="2" cellspacing="2">
    <tbody>
      <tr>
        <td style="text-align: center;">Turn LED on</td>
        <td style="text-align: center;">Turn LED off</td>
  </tr>
  <tr>
    <td style="text-align: center;"><button name="RedON">Red On</button></td>
    <td style="text-align: center;"><button name="RedOFF">Red Off</button></td>
  </tr>
  <tr>
    <td style="text-align: center;"><button name="YellowON">Yellow On</button></td>
    <td style="text-align: center;"><button name="YellowOFF">Yellow Off</button></td>
  </tr>
  <tr>
    <td style="text-align: center;"><button name="GreenON">Green On</button></td>
    <td style="text-align: center;"><button name="GreenOFF">Green Off</button></td>
  </tr>
</tbody>
  </table>
</form>
</body>
</html>
4 голоса | спросил Krish 11 Mayam13 2013, 10:03:36

3 ответа


3

Команда sudo python XYZ будет выполняться как пользователь apache. Вам нужно будет добавить этого пользователя в файл sudoers.

 sudo echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Замените «apache» своим системным именем пользователя apache (в некоторых системах могут быть «www-data», «httpd» или «www»).

Предложение

Зачем использовать Apache или PHP вообще? SimpleHTTPServer чрезвычайно прост в настройке. Вы можете заставить этот сервер обрабатывать ваши скрипты python, работая с привилегиями суперпользователя.

ответил emcconville 13 Maypm13 2013, 17:21:57
5

sudo python /var/www/red_on.py, скорее всего, запрашивает пароль sudo, который не предоставляется нигде, и команда не работает.

вы можете попробовать echo <password> | sudo -S ..., однако я не проверял, хорошо ли работает перенаправление вывода в PHP exec()

ответил lenik 11 Maypm13 2013, 13:24:37
1

Попробуйте выполнить следующие команды

chown root:root ./script
chmod 4775 ./script
ответил str8 18 Mayam13 2013, 08:27:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132