如何在Linux下执行python cgi脚本

如何在Linux下执行python cgi脚本,python,linux,cgi,Python,Linux,Cgi,我有一个python cgi脚本,它在Windows机器上运行良好,只需在控制台中启动CGIHTTPServer,打开html页面将数据传递给脚本并提交数据。 我现在需要在Linux下这样做,但事实证明这更加困难。一些网络搜索已经给出了这个脚本来启动我投入8000的服务器,因为原来的80不起作用 import os import BaseHTTPServer, CGIHTTPServer serverAddr = ("", 8000) os.chdir("/home/apan

我有一个python cgi脚本,它在Windows机器上运行良好,只需在控制台中启动CGIHTTPServer,打开html页面将数据传递给脚本并提交数据。 我现在需要在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脚本的文本,而不运行它。我已经看到了775的所有内容,看起来服务器并没有自动理解我希望它执行脚本。我怎样才能做到这一点?
谢谢。

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

在cgi bin和其他所有设备上尝试chmod 755;在我的服务器上,目录上的group write perm不允许执行。该目录被设置为drwxr-xr-x,因此应该能够工作。我已经在/home/apannife/www中获得了html文件,因为os.chdir在启动服务器之前在其中设置了默认值。我在下面创建了一个CGIBIN目录,其中包含python脚本。这是在linux服务器上的第一次尝试,所以我可以做一些非常幼稚的事情。我只是在firefox中打开html文件,希望它现在能正常工作;python代码的路径是/home/apannife/public_html/cgi bin/python代码,对吗?python文件设置了可执行位,如0755。如果是这样的话,那么权限似乎是好的。不,www是一个普通目录,cgi bin是www的子目录。所有包含它们的文件和目录都设置为755。我不知道0755的前导0是什么。@Alan:我在我的机器上试过你的代码,效果很好。我建议调试您的问题:1。将CGIHTTPServer.py复制到与服务器脚本相同的目录。2.向cgihtprequesthandler.is_cgi 3添加一些调试输出。运行服务器,访问CGI脚本并查看调试输出。好的,我试试。目前,我已经在www目录中安装了serve.py,并在终端中以python server.py的形式从命令行运行它。然后我在firefox中通过file->openfile打开html文件,输入数据并期望它运行。在html代码中,我必须去掉我在Windows中使用的操作命令的前导/后导,使其在cgi bin中查看文件,并怀疑这是否会导致问题。