我最近设置了python以通过CGI与lighttpd一起使用(请参阅此处)。但是,在我加入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>"
为什么脚本不执行?是因为权限?当然,包括该库不应该要求任何特殊权限吗?为什么脚本或错误日志中没有任何错误输出?
这可能是所包含文件或文件位置的以下权限/所有权中的一个或两个。要解决此问题,请尝试将包含的文件移至与您尝试运行的文件相同的目录,并确保该文件与您运行的脚本属于同一用户。如果这解决了问题,请告诉我们,我们可以指导您进一步设置权限/所有权和设置包含搜索路径。
—
史蒂夫·罗比拉德
我是Python的新手,RPi.GPIO是实际文件吗(在哪里)?\ cgi-bin \ gpio.py由pi:pi拥有,并且www目录的权限为www-data:www-data。
—
Mark Ingram 2012年
好的,需要控制GPIO引脚的任何文件都需要以root用户身份运行(这将在通过Web完成操作时打开一个安全漏洞)。话虽如此,如果您在尝试让lighttpd和CGI以root用户身份运行之前从命令行运行脚本,则将可以更轻松地调试所有问题。要安装RPi.GPIO模块,请遵循以下指示:Learn.adafruit.com/…。您有电子经验吗?您打算使用GPIO引脚做什么
—
Steve Robillard 2012年
啊,我已经测试过了,一个简单的脚本
—
马克·英格拉姆
import RPi.GPIO as GPIO
确实需要root权限!现在我想我需要获得lighttpd以root身份运行(这只是一个家庭项目)。
检查了这一点作为一个选项,以root身份运行stackoverflow.com/questions/89228/...
—
史蒂夫罗比拉德