如何执行Python CGI脚本?

2024-03-28 13:54:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在.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解释器的路径。

这是我的文件夹结构:
-公共html -.htaccess接口 -主.py -索引.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/

Tags: pyorg脚本comhttp内容binhtml
2条回答

这是我刚才写的东西。

让Python在CGI中工作有一些技巧。

  1. 总是通过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)
    
  2. 将脚本行尾转换为Unix格式: 大多数编辑器都有“显示行尾”的选项,然后有一个工具可以将Unix格式转换为PC格式。必须将行尾设置为Unix格式。

  3. 在CGI脚本的第一行说明Python解释器的路径: Python CGI脚本的第一行必须包含以下行之一:

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

    顶行用于在PC上调试,底行用于1和1等服务器。我将这些行保留如图所示,然后在它们在服务器上运行后通过删除第一行来编辑它们。

  4. 在打印任何其他输出之前打印指定HTML的内容类型: 这可以通过在脚本的早期添加以下行来完成:

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

    请注意,需要两行结尾。

  5. 设置Python脚本以提供调试信息: 导入以下内容以获取详细的调试信息。

    import cgitb; cgitb.enable()
    

    如果cgitb不可用,另一种方法是:

    import sys
    sys.stderr = sys.stdout
    
  6. 在服务器上,必须将python脚本权限设置为执行。 上载文件后,请确保编辑第一行并设置文件的执行权限。

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

使用

print("hello world")

相反

print "hello world"

否则python 3.+版本会有问题

相关问题 更多 >