我试图在单击图像时执行python脚本但是每当调用python脚本时它总是抛出500内部服务器错误?这是日志中的文字
[Sun Feb 15 20:31:04 2015] [error] (2)No such file or directory: exec of '/var/www/forward.py' failed
[Sun Feb 15 20:31:04 2015] [error] [client 192.168.15.51] Premature end of script headers: forward.py, referer: http://192.168.15.76/Testing.html
我不明白为什么会说Premature end of script header
?我可以执行一个只打印html标题或文本的基本python脚本。我试图执行的文件只有一些基本的wiringPi代码,可以从sudo python forward.py命令执行吗?
修改
这是我试图执行的脚本:
#!/usr/bin/python
import time
import wiringpi2 as wiringpi
wiringpi.wiringPiSetupPhys()
wiringpi.pinMode(40, 1)
wiringpi.digitalWrite(40, 1)
time.sleep(2)
wiringpi.digitalWrite(40, 0)
wiringpi.pinMode(40, 0)
答案 0 :(得分:2)
要检查的事项:
确保脚本是可执行的(chmod +x forward.py
)并且它有一个she-bang行(例如#!/usr/bin/env python
)。
确保脚本的所有者&组匹配用户apache正在运行的内容。
尝试以apache用户身份从命令行运行脚本。我看到您正在使用sudo
对其进行测试。它确实需要sudo
吗?如果是这样,无论用户运行什么,因为apache也需要sudoers访问。
由于看起来您正在使用CGI,请尝试将import cgitb; cgitb.enable();
添加到脚本的顶部。这将捕获任何异常并将其作为响应返回,而不是导致脚本死亡。
答案 1 :(得分:0)
除了@ lost-theory的建议外,我还会检查以确保:
Apache有权访问脚本的文件夹/文件。例如:
<Directory /path/to/your/dir>
<Files *>
Order allow,deny
Allow from all
Require all granted
</Files>
</Directory>