Я получил следующий минимальный код для CGI-обработки сервера HTTP, полученная из нескольких примеров на внутренних трубках:Python CGIHTTPServer Директория по умолчанию
#!/usr/bin/env python
import BaseHTTPServer
import CGIHTTPServer
import cgitb;
cgitb.enable() # Error reporting
server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8000)
handler.cgi_directories = [""]
httpd = server(server_address, handler)
httpd.serve_forever()
Тем не менее, когда я выполнить сценарий и попытаться запустите тестовый скрипт в том же каталоге через CGI, используя http://localhost:8000/test.py
, я вижу текст скрипта, а не результаты выполнения.
Права доступа установлены правильно, и сам сценарий тестирования не является проблемой (поскольку я могу запустить его с использованием python -m CGIHTTPServer
, когда скрипт находится в cgi-bin). Я подозреваю, что проблема имеет какое-то отношение к каталогам CGI по умолчанию.
Как я могу заставить скрипт выполнить?
Благодарим за ответ! Это помогло мне разобраться в Python-only сервере, который я пытался делать целую вечность. Стоит отметить, что каноническая «правильная» shebang «#!/Usr/bin/env python» - я был пойман этим раньше! – scubbo
@scubbo - Рад, что моя борьба с этим может дать вам некоторую ясность. Я обновил shebang, как вы предложили. Благодаря! – charleslparker