Я совершенно не осведомлен об этом, поэтому, пожалуйста, потерпите меня. Я пытаюсь настроить 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