让python工作,内部服务器错误

use*_*514 10 python

我正在尝试从Web浏览器调用Python脚本来工作.我一直收到错误:

500 Internal Server Error
Run Code Online (Sandbox Code Playgroud)

当我检查我的错误日志时,我看到了消息

Premature end of script headers
Run Code Online (Sandbox Code Playgroud)

这个错误在线的唯一文档说它可能是你的脚本中有不正确的行返回字符的结果,但我用pico从shell编写了我的测试脚本.此外,当我从命令行运行该文件时,它执行得很好."到目前为止,我对apache所做的唯一更改是将.py添加到"AddHandler cgi-script"行.

谢谢!


感谢您的快速回复.这是测试代码的最新版本.我按照建议在输出之前添加了几行,但仍然得到相同的错误:

#!/usr/local/bin/python
print "Content-type: text/html\n"
print "\n\n"
print "<HTML>"
print "<HEAD>"
print "<TITLE>Test</TITLE>"
print "</HEAD>"
print "<BODY>"
print "<H2>Hi there.</h2>"
print "</BODY>"
print "</HTML>"
Run Code Online (Sandbox Code Playgroud)

其他一些细节:我正在运行Apache 1.3并且没有mod_python.我设置apache来识别上面提到的.py.我从主public_html文件夹运行脚本.


更新.我放在shebang线上似乎并不重要.我尝试了所有的建议,即使我把它留空,同样的错误也出现在错误日志中,我得到500错误.

我在安装了WHM/Cpanel的Linux(red hat 3.4)上运行Apache/1.3.41.

Mat*_*sen 13

如果您的Python脚本没有可执行权限集,那么这就是您将获得的确切行为.

尝试:

chmod a+x foo.py
Run Code Online (Sandbox Code Playgroud)

(其中foo.py是您的脚本名称).

有关更多信息,请参阅Apache教程.


Jac*_*ack 8

在打印其他内容之前,你在顶部有这样的东西吗?

print "Content-type: text/html\n"
Run Code Online (Sandbox Code Playgroud)

如果您已经拥有此功能,请发布您的代码.


Tri*_*ych 6

有两件事情立即浮现在脑海中.

  1. 确保输出Content-Type: text/html标题
  2. 在输出"Hello,world"之类的内容之前,请确保在标题之后添加两个换行符("\n").


Tri*_*ych 5

好的,最后的猜测:

尝试将该shebang行更改为:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

要么

#!/usr/bin/local/env python
Run Code Online (Sandbox Code Playgroud)

了解您的平台/托管提供商也将有所帮助。