我有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
我已经尝试过以下事项:
#!/usr/local/bin/python
。另一个CGI脚本可以正常使用此路径。print "Content-type:text/html\n\n"
脚本的输出部分:
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秒。
你有什么建议?
答案 0 :(得分:0)
检查你的error_log
如果可以,请从虚拟主机的命令行运行脚本
如果可以,请 - webserveruser再次执行此操作
您是否尝试导入服务器上不存在的模块?
Web服务器进程是否有权获取以total_sum结尾的数据?
要缩小问题范围,请尝试对total_sum的值进行硬编码,并注释掉获取数据并计算数据的代码。其余的工作呢?
虚拟主机是否运行与本地服务器相同的python版本?如果没有,请检查您的代码是否适用于这两个版本。
答案 1 :(得分:0)
问题解决了。脚本中存在问题。我从'while'循环之一替换* .dat文件中的数据提取功能。 无论如何,我仍然不明白为什么它在本地服务器上工作,并且没有在虚拟主机上工作。