python — raspberry pi: невозможно выполнить script.py из переполнения стека

Обновить:

после консультации в комментариях я нашел свой error.log (/var/log/apache2/error.log):

Traceback (most recent call last):
File "/var/www/html/nano.py", line 7, in <module>
GPIO.setup(17,GPIO.OUT)
RuntimeError: No access to /dev/mem.  Try running as root!

Я решил свою проблему, добавив sudo:

<?php
echo exec("sudo /usr/bin/python /var/www/html/nano.py");
?>

но я до сих пор не понимаю этого.
Мне нужно запустить его как sudo, когда я вызываю nano.py с моего веб-сервера, но когда я запускаю nano.py из моего терминала (как пользователь pi), мне не нужно запускать его как sudo.
Я думал, что я дал доступ к корню Apache, когда я редактировал sudoers.

Кто-нибудь, кто может объяснить это?
и это безопасно? (мой сервер apache пока доступен только из моей собственной сети Wi-Fi)


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

Я могу выполнить свой скрипт nano.py из терминала:
nano.py

Мой сервер Apache также работает нормально (я могу отображать текст, если я хочу)

скрипт nano.py:

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17,GPIO.OUT)
print "LED on"GPIO.output(17,GPIO.HIGH)
time.sleep(1)
print "LED off"GPIO.output(17,GPIO.LOW)

У меня есть сценарий Python под названием nano.py, расположенный по адресу:
/var/www/html/nano.py (-rwxrwxrwx 1 pi www-data 236 26 января, 13:12 nano.py)
а также
/home/pi/nano.py (-rwxr-xr-x 1 пи пи 225 26 января 13:19 nano.py)
сценарии одинаковы:

<?php
echo shell_exec("python /var/www/html/nano.py");
?>

Я пробовал много вещей, но я не могу выполнить nano.py со своей страницы PHP:

  • пробовал разные пути (/var/www/html/nano.py /home/pi/nano.py nano.py)
  • пробовал shell_exec, exec
  • пробовал разные пути python (python / usr / bin / python)

Я попытался дать доступ к Apache sudo:

www-data ALL=(ALL) NOPASSWD:ALL

Я действительно не знаю, какие у меня есть варианты,
Поэтому я надеюсь, что кто-то может мне помочь.

1

Решение

Пытаться

<?php
echo shell_exec("/usr/bin/python /var/www/html/nano.py");
?>

Скорее всего, ваш двоичный файл Python не может быть найден. Также убедитесь, что эти функции не заблокированы вашим php.ini.

Если это не сработает, /var/log/apache2/error.log может рассказать вам больше об ошибке.

2

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

Сервер tomcat, скорее всего, работает под учетной записью «tomcat». Вероятно, поэтому вам нужна команда sudo.

0

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