如何执行Python CGI脚本?

我想在.shtml中执行Python CGI脚本
文件,但我无法弄清楚如何.我已经找到了几种方法?但似乎没有任何效果.在那里找到实际显示如何执行脚本的东西要困难得多,而不是如何编写脚本! ; /

我的Html:
http://pastebin.com/4sNZTZNQ

我的脚本:
http://pastebin.com/w5vGXCBp

我是CGI和任何Webstuff的新手,但我现在用Python编程半年了.

PS:很抱歉代码格式混乱,我现在上传到了pastebin:S

//编辑:
好的,现在有更多的信息,因为它仍然不起作用.

从heliohost.org,我被引导到http://area52.heliohost.org/cgi-bin/snakecharmer.py,在那里你可以找到python解释器的路径.

这是我的文件夹结构:
– public_html
  – .htaccess
  – main.py
  – index.shtml

.htaccess的内容:

Options +ExecCGI
AddHandler cgi-script .py

main.py的内容:

#! /usr/local/bin/python
print "Content-Type: text/html"
print

print "Hello World!"

index.shtml的内容:
http://pastebin.com/Trg8sXBc

现在,点击链接,出现“500 InternalServerError”,我不明白为什么. 🙁

服务器错误日志只是这样说:

[Wed Jun 15 14:41:26 2011] [error] [client 84.151.252.129] File does not exist: /home/nux95/public_html/500.shtml, referer: http: niklasrosenstein.heliohost.org/
最佳答案
这是我刚才写的东西.

有一些技巧可以让Python在CGI中工作.

>始终通过Apache浏览页面.
请注意,通过浏览器查看文件系统中的文件适用于html页面上的大多数内容,但不适用于CGI.要使脚本工作,必须通过htdocs文件系统打开它们.浏览器的地址行应如下所示:

\\127.0.0.1\index.html or
\\localhost\index.html

如果通过文件系统打开文件,CGI将无法工作.例如,如果它位于浏览器的位置栏中:

c:\Apache\htdocs\index.html (or some other example location)

>将脚本行的结尾转换为Unix格式:
大多数编辑都有“显示行尾”的选项,然后是从Unix转换为PC格式的工具.您必须将行的结尾设置为Unix格式.
>在CGI脚本的第一行说明Python解释器的路径:
您必须具有以下行之一作为Python CGI脚本的第一行:

#!C:\Python25\Python.exe
#!/usr/bin/python

在PC上进行调试时使用顶行,底部用于1and1等服务器.我留下如图所示的行,然后通过删除第一行在服务器上进行编辑.
>在打印任何其他输出之前,打印指定HTML的内容类型:
这可以通过在脚本的早期某处添加以下行来完成:

print "Content-Type: text/html\n\n"

请注意,需要2行结束.
>设置Python脚本以提供调试信息:
导入以下内容以获取详细的调试信息.

import cgitb; cgitb.enable()

如果cgitb不可用,则替代方法是执行以下操作:

import sys
sys.stderr = sys.stdout

>在服务器上,必须将python脚本权限设置为执行.
上传文件后,请务必编辑第一行并设置要执行的文件的权限.

检查一下你是否可以直接点击python脚本.如果不能,请按照上述步骤(2-6)进行修复.然后当Python脚本工作时,调试shtml.

转载注明原文:如何执行Python CGI脚本? - 代码日志