在 OSX 上设置 CGIHTTPServer

在 OSX 上设置 CGIHTTPServer

我对此一无所知,所以请耐心等待。我试图在 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

问题是服务器无法识别~/WWWCGI 目录,而您只是在浏览文件。请注意,服务器的路径从您当前的工作目录开始。

我有一个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

相关内容