Назад | Перейти на главную страницу

Настройка CGIHTTPServer на OSX

Я совершенно не осведомлен об этом, поэтому, пожалуйста, потерпите меня. Я пытаюсь настроить Python CGIHTTPServer на OSX, чтобы иметь возможность локально обслуживать cgi-скрипты, но, похоже, я не могу этого сделать.

У меня есть простой тестовый сценарий:

#!/usr/bin/env python

import cgi

cgi.test()

(с разрешениями -rwxr-xr-x@ это находится в ~/WWW (с разрешениями `drwxr-xr-x), который отлично работает из оболочки, и у меня есть этот сценарий для их обслуживания с помощью 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 просто обслуживает содержимое сценария, а не результат (т.е. возвращает код, а не вывод).

Что я делаю не так?

Проблема в том, что сервер не распознает ~/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