Недавно я настроил python для работы с lighttpd через CGI (см. Здесь ). Но в ту минуту, когда я включаю RPi.GPIO , скрипт перестает выполняться (я полагаю, потому что HTML не выводится), но в журнал ошибок не выводится ошибка ( /var/log/lighttpd/error.log
).
gpio.py
import RPi.GPIO as GPIO
print "<html>"
print "\t<head>"
print "\t\t<title>GPIO</title>"
print "\t</head>"
print "\t<body>"
print "\t\t<p>"
print "\t\t\tGPIO #17 status: "
print "\t\t</p>"
print "\t</body>"
print "</html>"
Почему скрипт не выполняется? Это из-за разрешений? Конечно, в том числе библиотека не должна требовать каких-либо специальных разрешений? Почему в скрипте или в журнале ошибок нет ошибок?
import RPi.GPIO as GPIO
действительно требует привилегий root! Теперь, я думаю, мне нужно, чтобы lighttpd работал от имени пользователя root (это просто домашний проект).Ответы:
Вы можете попробовать добавить перед импортом RPi.GPIO:
Это может помочь диагностировать ошибку.
И добавьте эти строки перед выводом html:
См. Http://docs.python.org/library/cgi.html.
источник
Следуя совету от okertanov, я обнаружил, что вы не можете использовать
RPi.GPIO
скрипт Python CGI, поскольку он требует root-доступа. Я обошел проблему, вызвавgpio
приложение командной строки, которое входит в состав WiringPi , это можно вызвать из учетной записи без полномочий root.источник
#
означает комментарий в PythonПросто используйте
Теперь вам нужно решить проблему с разрешениями
источник
В этом руководстве рекомендуется создать специальную копию Python и предоставить ему привилегии пользователя root, например:
А затем, чтобы сделать свой CGI, перейдите на страницу
sudo nano /etc/lighttpd/lighttpd.conf
и найдите, куда вы направляете.py
файлы, и перейдите/usr/bin/python/
на новый/usr/bin/pythonRoot
/источник