如何在Linux下执行Python CGI脚本
我有一个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
被认为是两个不同的文件夹。