Python简单CGI服务器os.execve(scriptfile,args,os.environ)权限错误
01 January 2010
这段时间在学Python,今天开始进入到CGI编程,示例中有个简单CGI Server的例子,代码如下:
webserver.py:
webdir = "." #html files directory port = 8000 #server port import os, sys from BaseHTTPServer import HTTPServer from CGIHTTPServer import CGIHTTPRequestHandler if sys.platform[:3] == "win": CGIHTTPRequestHandler.have_popen2 = False CGIHTTPRequestHandler.have_popen3 = False os.chdir(webdir) srvraddr = ("", port) srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler) srvrobj.serve_forever()
页面CGI为cgi101.py:
#!/usr/bin/python import cgi form = cgi.FieldStorage() print "Content-type: text/html/n" print "<title>Reply Page</title>" if not form.has_key("username"): print "<h1>Who are you?</h1>" else: print "<h1>Hello <i>%s</i>!</h1>" % cgi.escape(form['username'].value)
HTML页面为:
<html> <title>Interactive Page</title> <body> <form method="post" action="cgi-bin/cgi101.py"> <p><b>Enter your name:</b></p> <p>Username:<input type="text" name="username"/></p> <p>Password:<input type="password" name="pwd"/></p> <input type="submit" name="submit" text="submit"/> </form> </html>
先运行webserver.py(我是在Ubuntu上,用sudo python webserver.py)启动了server,然后在Firefox中访问:http://localhost:8000/cgi101.html
结果Firefox中弹出下载cgi101.py脚本的对话框,而不是运行cgi返回结果,server终端中显示:
localhost - - [01/Jan/2010 17:05:32] "GET /cgi-bin/cgi101.py?username=Jone HTTP/1.1" 200 - Traceback (most recent call last): File "/usr/lib/python2.6/CGIHTTPServer.py", line 255, in run_cgi os.execve(scriptfile, args, os.environ) OSError: [Errno 13] Permission denied
说明os.execve权限出问题了,解决方法如下,将cgi101.py的权限设为777,如果还是不行的话,要将整个cgi目录的权限设为777(例如,本例中使用命令chmod -R 777 cgi-bin)
然后就可以了。
Good Luck!
PS: Happy New Year !
blog comments powered by Disqus