如何在Linux下执行Python CGI脚本

1 投票
1 回答
2577 浏览
提问于 2025-04-16 16:49

我有一个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,但看起来服务器并没有自动理解我想让它执行这个脚本。我该怎么做才能让它执行呢?谢谢。

1 个回答

0

服务器只会在根目录下的 /cgi-bin/htbin 这两个文件夹里执行脚本。跟Windows不一样的是,在Linux系统中,这些文件夹的名字是区分大小写的,也就是说 /Cgi-Bin/cgi-bin 被认为是两个不同的文件夹。

撰写回答