PHP выполняет программу на Python с exec на Raspberry Pi

Я использую сервер Apache с установленным php на моем Raspberry Pi 2 B +. В моем PHP-файле у меня есть код

 echo exec("sudo chmod +x gpio.py && sudo python gpio.py 50");

который не работает. Однако когда я запускаю эту же команду в каталоге на локальном компьютере, она работает. Я тоже могу бегать как лс

 echo exec("ls");

Команда и это работает, но команда для запуска кода Python не работает. Как я могу решить эту проблему? Этот файл python устанавливает GPIO и устанавливает его в LOW. Любая помощь будет оценена! Спасибо

SUDOER FILE

 #
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
www-data ALL = NOPASSWD: /var/www/bash.sh
# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL

-1

Решение

Скорее всего, ваш сервер Apache не имеет достаточных разрешений для выполнения команды. Вы могли бы сделать несколько вещей, добавив www-data группа в «список sudo». Это доступно в /etc/sudoers,

Ваша исходная модель может не работать, если группа Apache не имеет полных возможностей sudo. Одним из обходных путей может быть создание сценария оболочки, подобного следующему:

#!/bin/bash
sudo chmod +x gpio.py && sudo python gpio.py 50 2>&1

Затем измените PHP на следующее:

echo exec("/path/to/my/script.sh");

Вы хотели бы добавить что-то вроде этого к /etc/sudoers файл:

www-data ALL = NOPASSWD: /path/to/my/script.sh

Хотя учтите, что добавление веб-сервера в список sudo обычно не рекомендуется, если вы можете обойти это.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]