如何在Linux下执行python cgi脚本
我有一个python cgi脚本,它在Windows机器上运行良好,只需在控制台中启动CGIHTTPServer,打开html页面将数据传递给脚本并提交数据。 我现在需要在Linux下这样做,但事实证明这更加困难。一些网络搜索已经给出了这个脚本来启动我投入8000的服务器,因为原来的80不起作用如何在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
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中查看文件,并怀疑这是否会导致问题。