2013-04-08 124 views
8

我正在嘗試使用Apache服務器將python腳本作爲cgi運行。我的腳本看起來是這樣的:運行python腳本作爲cgi apache服務器

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

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

我已經做在httpd.conf中進行必要的設置(在我看來):

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

我已經使用chmod

設置執行權限腳本

但是,當我嘗試通過本地主機訪問腳本時,出現錯誤500:腳本輸出在標題之前結束:script.py 可能是什麼問題?該腳本是在類似Unix的環境中創建的,所以我認爲clrf vs lf的問題並不成立。非常感謝。

+2

有沒有縮進我你的腳本在if子句中,或者你只是像這樣粘貼它? – 2013-04-08 11:42:45

+0

'python -m SimpleHTTPServer'是「一種」在Python中運行HTTP服務器的想法。 – 2013-04-08 11:45:30

回答

14

我認爲你缺少一個print語句後

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

CGI腳本的輸出應該由兩個部分組成,一個空行分隔。第一部分包含許多標題,告訴客戶以下哪種數據是 。

第二部分通常是HTML,其允許客戶端軟件,以顯示與標題,在線圖像很好地格式化文本等

它可能看起來像

#!/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! 
""" 

詳情訪問python-cgi

對於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

非常感謝,我嘗試過'\ n \ n'和Python 2語法(Xampp和Python 3),但沒有成功。 – Zso 2017-01-29 20:49:04