2013-04-08 45 views
8

Tôi đang cố gắng tạo một tập lệnh python chạy dưới dạng cgi, sử dụng máy chủ Apache. Kịch bản của tôi trông giống như sau:chạy tập lệnh python như máy chủ cgi apache

#!/usr/bin/python 
    import cgi 
    if __name__ == "__main__": 

    print("Content-type: text/html") 
    print("<HTML>") 
    print("<HEAD>") 

Tôi đã làm các cấu hình cần thiết trong httpd.conf (theo ý kiến ​​của tôi):

<Directory "/opt/lampp/htdocs/xampp/python"> 
    Options +ExecCGI 
    AddHandler cgi-script .cgi .py 
    Order allow,deny 
    Allow from all 
    </Directory> 

tôi đã thiết lập các điều khoản thực thi cho các kịch bản với chmod

Tuy nhiên, khi tôi cố gắng truy nhập tập lệnh qua máy chủ cục bộ, tôi nhận được Lỗi 500: Kết thúc đầu ra tập lệnh trước tiêu đề: script.py Điều gì có thể là vấn đề? Kịch bản được tạo ra trong môi trường Unix giống như vậy nên tôi nghĩ rằng vấn đề của clrf vs lf không đứng. Cảm ơn rất nhiều.

+2

có không thụt lề i n kịch bản của bạn trong mệnh đề if hoặc bạn chỉ cần dán nó như thế? –

+0

'python -m SimpleHTTPServer' là" loại "ý tưởng để chạy một máy chủ HTTP bằng Python. –

Trả lời

14

Tôi nghĩ rằng bạn đang thiếu một tuyên bố in sau

print("Content-type: text/html") 

Kết quả của một kịch bản CGI nên bao gồm hai phần, cách nhau bằng một dòng trống. Phần đầu tiên chứa một số tiêu đề, cho khách hàng biết loại dữ liệu nào là sau đây.

Phần thứ hai thường là HTML, cho phép các phần mềm máy khách để hiển thị văn bản định dạng độc đáo với những hình ảnh tiêu đề, in-line vv

Nó có thể trông giống như

#!/usr/bin/env python 

print "Content-Type: text/html" 
print 
print """ 
    <TITLE>CGI script ! Python</TITLE> 
    <H1>This is my first CGI script</H1> 
    Hello, world! 
""" 

Để biết thêm chi tiết chuyến thăm python-cgi

Đối python3

#!/usr/bin/env python3 

print("Content-Type: text/html") 
print() 
print (""" 
    <TITLE>CGI script ! Python</TITLE> 
    <H1>This is my first CGI script</H1> 
    Hello, world! 
""" 
) 
+0

Cảm ơn rất nhiều, tôi đã thử thành công cú pháp '\ n \ n' và Python 2 (Xampp và Python 3). – Zso

Các vấn đề liên quan