2013-04-08 21 views
8

Ich versuche, ein Python-Skript als CGI ausführen, mit einem Apache-Server. Mein Skript sieht wie folgt aus:Python-Skript als CGI Apache-Server ausführen

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

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

ich die notwendigen Konfigurationen in httpd.conf getan haben (meiner Meinung nach):

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

ich die Ausführungsberechtigung für das Skript mit chmod gesetzt haben

Wenn ich jedoch versuche, über localhost auf das Skript zuzugreifen, bekomme ich einen Fehler 500: Ende der Skriptausgabe vor den Überschriften: script.py Was könnte das Problem sein? Das Skript wird in einer Unix-ähnlichen Umgebung erstellt, daher glaube ich, dass das Problem von clrf vs lf nicht besteht. Danke vielmals.

+2

gibt es keine Gedankenstrich i n dein Skript in der if-Klausel oder du fügst es einfach so ein? –

+0

'python -m SimpleHTTPServer' ist" irgendwie "die Idee, einen HTTP-Server in Python zu betreiben. –

Antwort

14

Ich glaube, Sie sind eine print-Anweisung nach

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

Die Ausgabe eines CGI-Skript fehlen sollte durch eine Leerzeile aus zwei Abschnitten, getrennt bestehen. Der erste Abschnitt enthält eine Anzahl von Kopfzeilen, die dem Client mitteilen, welche Art von Daten folgt.

Der zweite Abschnitt ist in der Regel HTML, die die Client-Software ermöglicht mit Kopf, in-line Bildern schön formatierten Text anzuzeigen usw.

Es aussieht wie

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

Für weitere Informationen besuchen python-cgi

Für 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

Vielen Dank, habe ich '\ n \ n' und Python 2 Syntax (Xampp und Python 3) erfolglos versucht. – Zso