2013-04-08 27 views
8

Sto provando a eseguire uno script python come cgi, utilizzando un server Apache. Il mio script simile a questa:esegui script python come server apgi cgi

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

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

ho fatto le configurazioni necessarie in httpd.conf (a mio parere):

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

ho impostato il permesso di esecuzione per lo script con chmod

Tuttavia, quando provo ad accedere allo script tramite localhost ottengo un errore 500: Fine dell'output dello script prima delle intestazioni: script.py Quale potrebbe essere il problema? Lo script è creato in un ambiente simile a Unix quindi penso che il problema di clrf vs lf non regge. Molte grazie.

+2

non c'è un trattino i Se la tua clausola è inserita in if o se la incolli semplicemente in quel modo? –

+0

'python -m SimpleHTTerver' è" tipo "l'idea di eseguire un server HTTP in Python. –

risposta

14

penso che ti manca un comunicato stampa dopo

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

L'output di uno script CGI dovrebbe consistere in due sezioni, separate da una riga vuota. La prima sezione contiene un numero di intestazioni, che dice al cliente che tipo di dati è seguito.

La seconda sezione è di solito HTML, che permette al software client per visualizzare il testo ben formattato con immagini di testa, in linea, ecc

Può sembrare

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

per maggiori informazioni visita python-cgi

Per 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

Grazie mille, ho provato senza successo la sintassi '\ n \ n' e Python 2 (Xampp e Python 3). – Zso

Problemi correlati