2011-05-02 37 views
1

下执行一个Python CGI脚本我有执行的Windows机器上细只需在控制台启动CGIHTTPServer,打开HTML页面中的数据传递给脚本和提交数据的蟒蛇CGI脚本。
我现在需要在Linux下这样做,但是这证明更加困难。一些网络搜索已经给这个脚本来启动服务器(我已经把8000年作为原始80没有工作)如何Linux的

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脚本的文字,不运行它。我已经看到了一切,看起来服务器不能自动理解我希望它执行脚本。我该如何做到这一点? 谢谢。

+0

尝试搭配chmod 755;在我的服务器上,目录上的group-write perm禁止执行。 – 2011-05-02 13:27:12

+0

一个被设置为drwxr-XR-X这样应该能够工作 – Alan 2011-05-02 13:45:20

回答

0

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

+0

我得在/ home/apannife/WWW HTML文件,因为这是在os.chdir启动服务器之前设置默认。我已经在它下面创建了一个cgi-bin目录下的python脚本。这是Linux服务器的第一次尝试,所以我可以做一些非常幼稚的事情。我只是在Firefox中打开html文件,并期待它在目前的工作。 – Alan 2011-05-02 13:43:19

+0

所以'www'是'public_html'的符号链接;并且python代码的路径是/ home/apannife/public_html/cgi-bin/the-python-code,对吧? python文件有可执行位设置,如0755.如果是这样,那么权限看起来不错。 – 2011-05-02 14:00:30

+0

不,www是一个普通的目录,其中cgi-bin是www的子目录。并且包含它们的所有文件和目录都设置为755(不知道0755的前导“0”是什么)。 – Alan 2011-05-02 14:09:06