【问题标题】:How to execute a python cgi-script under Linux如何在 Linux 下执行 python cgi-script
【发布时间】:2012-09-17 14:51:56
【问题描述】:

我有一个 python cgi 脚本,只需在控制台中启动 CGIHTTPServer,打开 html 页面将数据传递给脚本并提交数据,即可在 Windows 机器上正常执行。
我现在需要在 Linux 下执行此操作,但事实证明这更加困难。一些网络搜索已经给出了这个脚本来启动服务器(我已经输入了 8000,因为原来的 80 不起作用)

 import os  
 import BaseHTTPServer, CGIHTTPServer  
 serverAddr = ("", 8000)  
 os.chdir("/home/apannife/www")  
 serv = BaseHTTPServer.HTTPServer( \  
     serverAddr, CGIHTTPServer.CGIHTTPRequestHandler)  
 serv.serve_forever()  

html。

<HTML><HEAD><TITLE>

Test

</TITLE>

</HEAD>

<BODY>

<B>  Filename </B>

<FORM METHOD=post ACTION="cgi-bin/docking_cgi.py" ENCTYPE="multipart/form-data">

<INPUT Type="file" NAME="upfile" SIZE=45><BR>

<P><INPUT TYPE=submit></FORM>



</BODY></HTML>

和cgi的第一部分。

#!/usr/bin/env python

import cgi

from cgi import FieldStorage


reshtml = '''Content-Type: text/html\n

<HTML><HEAD><TITLE>

DEMO

</TITLE></HEAD>

<BODY><H3> OUTPUT SENT TO %s %s </H3>

</BODY></HTML>'''
form = cgi.FieldStorage()

upfile = form['upfile']

但是提交数据只是返回 cgi 脚本的文本并且不运行它。我已经 chmod-ded 775 一切都在眼前,看起来服务器并没有自动理解我希望它执行脚本。我该如何做到这一点? 谢谢。

【问题讨论】:

  • 在 cgi-bin 和其他一切上尝试 chmod 755;在我的服务器上,目录上的 group-write perm 不允许执行。
  • 那个设置为drwxr-xr-x所以应该可以工作

标签: python linux cgi


【解决方案1】:

服务器只执行相对于服务器根目录/cgi-bin/htbin 下的脚本。与 Windows 相比,这些名称在 Linux 上区分大小写。

【讨论】:

  • 我在 /home/apannife/www 中有 html 文件,因为这是 os.chdir 在启动服务器之前设置默认值的地方。我在下面创建了一个 cgi-bin 目录,其中包含 python 脚本。这是 linux 服务器上的第一次尝试,所以我可能会做一些非常天真的事情。我只是在 Firefox 中打开 html 文件并期望它现在可以工作。
  • 所以 'www' 是指向 'public_html' 的符号链接; python代码的路径是/home/apannife/public_html/cgi-bin/the-python-code,对吧?并且 python 文件设置了可执行位,例如 0755。如果是这样,那么权限似乎很好。
  • 不,www是普通目录,cgi-bin是www的子目录。并且包含它们的所有文件和目录都设置为755(不知道0755的前导“0”是什么)。
  • @Alan:我在我的机器上试过你的代码,它工作正常。我建议调试您的问题: 1. 将CGIHTTPServer.py 复制到与您的服务器脚本相同的目录。 2. 将一些调试输出添加到CGIHTTPRequestHandler.is_cgi() 3. 运行您的服务器,访问您的 CGI 脚本并观察调试输出。
  • 好的,我会试试的。目前,我在 www 目录中有 serve.py,并从终端中的命令行将其作为 python server.py 运行。然后我只是通过“文件->打开文件”在firefox中打开html文件,输入数据并期望它运行。在 html 代码中,我不得不从我在 Windows 中使用的 ACTION 命令中去掉前导“/”,以使其能够看到 cgi-bin 中的文件,并想知道这是否会导致问题。
猜你喜欢
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 2018-04-08
相关资源
最近更新 更多