2013-04-08 20 views
8

Próbuję zrobić skrypt Pythona uruchamiany jako cgi, przy użyciu serwera Apache. Mój skrypt wygląda tak:uruchom skrypt Pythona jako serwer cgi apache

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

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

zrobiłem niezbędne konfiguracje w httpd.conf (moim zdaniem):

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

mam ustawić pozwolenia na wykonanie skryptu z chmod

Jednak, gdy próbuję uzyskać dostęp do skryptu przez localhost, otrzymuję komunikat Błąd 500: Koniec wyjścia skryptu przed nagłówkami: script.py Co może być problemem? Skrypt jest tworzony w środowisku podobnym do Uniksa, więc myślę, że problem clrf vs lf nie stoi. Wielkie dzięki.

+2

Czy nie ma tiret ja n twój skrypt w klauzuli if lub po prostu wklejasz go w ten sposób? –

+0

'python -m SimpleHTTPServer' jest" rodzajem "pomysłu na uruchomienie serwera HTTP w Pythonie. –

Odpowiedz

14

Chyba brakuje oświadczenie wydruku po

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

Wyjście skryptu CGI powinno składać się z dwóch części, oddzielonych pustą linią. Pierwsza sekcja zawiera pewną liczbę nagłówków, informujących klienta, jakie dane są następujące: .

Druga sekcja jest zazwyczaj HTML, który umożliwia oprogramowanie klienckie do wyświetlania ładnie sformatowany tekst z nagłówka, in-line obrazów itp

może wyglądać

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

więcej szczegółów wizyty python-cgi

Dla 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

Wielkie dzięki, udało mi się bezskutecznie wypróbować składnię '\ n \ n' i Python 2 (Xampp i Python 3). – Zso