繁体   English   中英

如何执行 Python CGI 脚本?

[英]How to execute Python CGI Script?

我想在.shtml文件中执行 Python CGI 脚本,但我不知道怎么做。 我已经找到了几种方法?,但似乎没有任何效果。 在那里,要找到真正展示如何执行脚本而不是如何编写脚本的东西要困难得多。 ;/

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

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

我对 CGI 和任何 Webstuff 都很陌生,但我用 Python 编程已经有半年多了。

PS:对不起,代码格式混乱,我现在将nit上传到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 中工作。

  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. State Python 解释器的路径位于 CGI 脚本的第一行: 您必须将以下行之一作为 ZA7F5F35426B927411FC9231B563827 脚本的第一行:

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

    当您在 PC 上进行调试时使用顶行,而底行用于服务器,例如 1and1。 我留下如图所示的行,然后通过删除第一行在服务器上启动它们后对其进行编辑。

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

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

    请注意,需要 2 个行尾。

  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.+ 版本的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM