CGIHTTPRequestHandler запустить PHP или Python скрипт в Python - PullRequest
3 голосов
/ 17 марта 2011

Я пишу простой Python веб-сервер на Windows ..

это работает, но теперь я хочу запускать динамические сценарии (php или py), а не только HTML-страницы ..

вот мой код:

from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler

class RequestsHandler(CGIHTTPRequestHandler):
    cgi_directories = ["/www"] #to run all scripts in '/www' folder
    def do_GET(self):
        try:
            f = open(curdir + sep + '/www' + self.path)
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
            self.wfile.write(f.read())
            f.close()
        except IOError:
            self.send_error(404, "Page '%s' not found" % self.path)

def main():
    try:
        server = HTTPServer(('', 80), RequestsHandler)
        server.serve_forever()
    except KeyboardInterrupt:
        server.socket.close()

if __name__ == '__main__':
    main()

если я помещаю php-код в папку www, я получаю страницу, но код не интерпретируется

что мне делать? спасибо

Ответы [ 3 ]

4 голосов
/ 20 марта 2011

Я думаю, ты закончил разработку.

#!/usr/bin/env python
import CGIHTTPServer

def main():

    server_address = ('', 8000)
    handler = CGIHTTPServer.CGIHTTPRequestHandler
    handler.cgi_directories = ['/cgi']
    server = CGIHTTPServer.BaseHTTPServer.HTTPServer(server_address, handler)
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        server.socket.close()

if __name__ == '__main__':
    main()
1 голос
/ 19 марта 2011

Вы сделали исполняемый файл php ?? chmod + x spam.php (для Linux я понятия не имею, как сделать файлы исполняемыми на windows)

Вам также потребуется установить интерпретатор PHP на вашем компьютере

источник из ответа ЗДЕСЬ

Вам также следует рассмотреть возможность использования ЭТОГО в качестве косвенной альтернативы.

0 голосов
/ 10 октября 2016

Проблема с классом CGIHTTPServer.Он не устанавливает переменные CGI env.Это было исправлено здесь:
https://github.com/gabrielgrant/tonto/blob/master/tonto.py

...