CGIHTTPRequestHandler在python中运行php或python脚本

2024-10-05 14:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在windows上编写一个简单的python web服务器。。

它可以工作,但现在我想运行动态脚本(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文件夹中,我会得到页面,但代码不会被解释

我该怎么办?谢谢


Tags: 代码fromimportselfsendservermaindef
3条回答

我认为你是过度工程化了。

#!/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()

问题出在CGIHTTPServer类上。它不设置CGI env变量。 此处已修复:
https://github.com/gabrielgrant/tonto/blob/master/tonto.py

你把php文件变成可执行文件了吗?? chmod+x spam.php(对于Linux,我不知道如何在windows上执行文件)

你还需要在你的电脑上安装PHP解释器

来源于回复HERE

您还应该考虑使用THIS作为间接替代方案。

相关问题 更多 >