0

我有在我的本地 Apache 2.2.22 服务器上完美运行的 python CGI 脚本。它输出正确的结果等等。但是当我尝试在虚拟主机上执行它时,出现错误 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"

脚本的输出部分:

    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 上运行良好,但在虚拟 Web 托管上它会因 500 内部服务器错误而崩溃。我真的不知道该怎么办。在技​​术支持中说我的脚本有问题。

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

你有什么建议?

4

2 回答 2

0

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

于 2013-07-17T11:37:06.537 回答
0

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

于 2013-07-17T18:59:03.740 回答