Python CGI脚本 - 500错误

时间:2013-07-17 10:55:13

标签: python apache cgi

我有python CGI脚本,在我的本地Apache 2.2.22服务器上运行完美。它输出正确的结果等等。但是当我尝试在虚拟主机上执行它时,会出现错误500。 我真的不知道为什么它不起作用。

Apache错误日志如下所示:

[Wed Jul 12 16:06:54 2013] [error] [client 89.223.235.12] Premature end of script headers: /home/u67442/rrrrr.com/cgi-bin/test.py
[Wed Jul 12 16:09:31 2013] [error] [client 89.223.235.12] Premature end of script headers: /home/u67442/rrrrr.com/cgi-bin/test.py

我已经尝试过以下事项:

  1. 我确信解释器的路径是正确的 - #!/usr/local/bin/python。另一个CGI脚本可以正常使用此路径。
  2. 我已将chmod 755设置为此脚本。
  3. 我已经设置了UNIX格式的行尾字符。
  4. 我使用正确的HTTP标头:print "Content-type:text/html\n\n"
  5. 脚本的输出部分:

        print "Content-type:text/html\n\n"
        print "<html>"
        print "<head>"
        print "<title>Results</title>"
        print "<head><h2 align=center>Results</h2></head>"
        print "</head>"
        print '<body bgcolor="#e8f3d8">'
        print "<hr>"
        print "<b>Result = %s </b>" % str(round(total_sum, 5))
        print "</body>"
        print "</html>" 
    

    有趣的是,另一个非常相似的脚本具有相同的路径,标题,EOL,输出等,在本地服务器和虚拟主机上运行良好。非常奇怪的是,这个脚本在我的本地apache上工作正常,但在虚拟网络托管上它崩溃了500内部服务器错误。我真的不知道该怎么办。在技​​术支持中说我的脚本存在问题。

    只有一个想法 - 等待输出超时。我的脚本中的数据处理大约需要15-25秒。

    你有什么建议?

2 个答案:

答案 0 :(得分:0)

检查你的error_log 如果可以,请从虚拟主机的命令行运行脚本 如果可以,请 - webserveruser再次执行此操作 您是否尝试导入服务器上不存在的模块? Web服务器进程是否有权获取以total_sum结尾的数据?
要缩小问题范围,请尝试对total_sum的值进行硬编码,并注释掉获取数据并计算数据的代码。其余的工作呢? 虚拟主机是否运行与本地服务器相同的python版本?如果没有,请检查您的代码是否适用于这两个版本。

答案 1 :(得分:0)

问题解决了。脚本中存在问题。我从'while'循环之一替换* .dat文件中的数据提取功能。 无论如何,我仍然不明白为什么它在本地服务器上工作,并且没有在虚拟主机上工作。