Запустите ./script.sh из PHP

0

У меня есть веб-сервер, который воспроизводит музыку из малины и включает светодиод со сценарием gpio.sh. Я использую mpd, mpc и gpio.

Мой /var/www/index.php:

<html><body><?php
echo exec('whoami');
if(isset($_POST['button1']))
{
   shell_exec('mpc play')
   shell_exec('/bin/bash /var/www/gpio.sh');
}
?>
    <form method="post">
    <p align=center>
    OUTPUT (AUDIO) => <button name="button1">PLAY</button>
    </p>
    </form>
    </body></html>

В терминале я могу запустить /bin/bash/var/www/gpio.sh успешно и включить светодиод. С веб-сервера "mpc play" WORKS и может играть песню, но он не может запустить этот gpio.sh. Владельцем index.php является www-data

-rwx ------ 1 www-data www-data 1262 Dec 8 10:45 gpio.sh

-rwx ------ 1 www-data www-data 272 дек. 9 09:39 index.php

Что мне делать? Когда я меняю владельца index.php или gpio.sh на root, php не может выполнить. Неверен ли мой index.php? Я не могу выполнить.sh из php. Пожалуйста помоги.

  • 0
    может быть, это может помочь: stackoverflow.com/questions/17393265/…
  • 0
    @ Марко Мура: Не помогать. Все еще не работает. :(
Показать ещё 2 комментария
Теги:
mpd
mpc

1 ответ

0

Идеальным решением для вас было бы установить SUID для скрипта gpio.sh, но, к сожалению, вы не можете этого сделать, поскольку gpio.sh - это скрипт.

У вас есть три варианта:

  • Вы можете превратить свой скрипт в приложение say C++, а затем установить SUID
  • Вы можете использовать некоторые GPIO lib для python, которые не принуждают использование root, например: pigpio
  • Вы можете установить SUID для интерпретатора python, но я не уверен, что его хорошая идея вообще

Ещё вопросы

Сообщество Overcoder
Наверх
Меню