.py执行时出现500内部服务器错误

时间:2015-02-15 20:42:21

标签: python apache

我试图在单击图像时执行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)

2 个答案:

答案 0 :(得分:2)

要检查的事项:

  1. 确保脚本是可执行的(chmod +x forward.py)并且它有一个she-bang行(例如#!/usr/bin/env python)。

  2. 确保脚本的所有者&组匹配用户apache正在运行的内容。

  3. 尝试以apache用户身份从命令行运行脚本。我看到您正在使用sudo对其进行测试。它确实需要sudo吗?如果是这样,无论用户运行什么,因为apache也需要sudoers访问。

  4. 由于看起来您正在使用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>