我想在.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/
答案 0 :(得分:7)
这是我刚才写的东西。
有一些提示让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。
答案 1 :(得分:0)
USE
print("hello world")
而不是
print "hello world"