我对此一无所知,所以请耐心等待。我试图在 OSX 上设置 python 的 CGIHTTPServer,以便能够在本地提供 cgi 脚本,但似乎无法做到这一点。
我有一个简单的测试脚本:
#!/usr/bin/env python
import cgi
cgi.test()
(具有-rwxr-xr-x@
位于~/WWW
(具有权限`drwxr-xr-x)的权限)可以从 shell 正常运行,并且我有此脚本使用 CGIHTTPServer 为它们提供服务:
import CGIHTTPServer
import BaseHTTPServer
class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
cgi_directories = ["~/WWW"]
PORT = 8000
httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler)
print "serving at port", PORT
但是当我运行它时,它只会localhost:8000
提供脚本的内容,而不是结果(即它返回代码,而不是输出)。
我究竟做错了什么?
答案1
问题是服务器无法识别~/WWW
CGI 目录,而您只是在浏览文件。请注意,服务器的路径从您当前的工作目录开始。
我有一个server.py
与上面一样的操作,但使用绝对路径并循环运行服务器。
完整代码:
$ cd ~
$ mkdir WWW
$ cat > server.py
#!/usr/bin/env python
import CGIHTTPServer
import BaseHTTPServer
class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
cgi_directories = ["/WWW"]
PORT = 8000
httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
^D
$ cat > WWW/test.py
#!/usr/bin/env python
import cgi
cgi.test()
^D
$ chmod +x server.py WWW/test.py
$ ./server.py &
$ # browse to http://127.0.0.1:8000/WWW/test.py