PYthon Script erzeugt Apache-Fehlermeldung

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Hallo

ich habe ein kleines Problem mit meinem Apache-Script. Während dieses hier einwandfrei funktioniert:

Code: Alles auswählen

#!/usr/bin/python

import cgi
form = cgi.FieldStorage()            # parse form data
print "Content-type: text/html\n"      # plus blank line

html_header = "<html><body><title>Py-CGI T-002 -- Output-T001</title><h1>Result</h1><hr />"
last_f = "<p>Lastname: %s</p>"
first_f = "<p>Firstname: %s</p>"
nick_f = "<p>Nickname: %s</p>"
mail_f = "<p>e-Mail: %s</p>"
pass1_f = "<p>Password: %s</p>"
pass2_f = "<p>Retype %s</p>"
html_footer ="</body></html>"

if form.has_key('lastname'):
    last = ['lastname'].value
else:
    last = "none"
if form.has_key('firstname'):
    first = form['firstname'].value
else:
    first = "none"
if form.has_key('nickname'):
    nick = form['nickname'].value
else:
    nick = "none"
if form.has_key('e-mail'):
    mail = form['e-mail'].value
else:
    mail = "none"
if form.has_key('password1'):
    pass1 = form['password1'].value
else:
    pass1 = "none"
if form.has_key('password2'):
    pass2 = form['password2'].value
else:
    pass2 = "none"
    
print html_header
print last_f % (form['last'].value)
print first_f % (form['first'].value)
print nick_f % (form['nick'].value)
print mail_f % (form['mail'].value)
print pass1_f % (form['pass1'].value)
print pass2_f % (form['pass2'].value)
print html_footer
erzeugt dieses:

Code: Alles auswählen

#!/usr/bin/python

import cgi, cgitb
cgitb.enable()
form = cgi.FieldStorage()            # parse form data
print "Content-type: text/html\n"      # plus blank line

html_header = "<html><body><title>Py-CGI T-002 -- Output-T001</title><h1>Result</h1><hr />"
field = """
<p>Lastname: %s</p>\n
<p>Firstname: %s</p>\n
<p>Nickname: %s</p>\n
<p>e-Mail: %s</p>\n
<p>Password: %s</p>\n
<p>Retype %s</p>
"""
html_footer ="</body></html>"

if form.has_key('lastname'):
    last = ['lastname'].value
else:
    last = "none"
if form.has_key('firstname'):
    first = form['firstname'].value
else:
    first = "none"
if form.has_key('nickname'):
    nick = form['nickname'].value
else:
    nick = "none"
if form.has_key('e-mail'):
    mail = form['e-mail'].value
else:
    mail = "none"
if form.has_key('password1'):
    pass1 = form['password1'].value
else:
    pass1 = "none"
if form.has_key('password2'):
    pass2 = form['password2'].value
else:
    pass2 = "none"
    
print html_header
print field % (last, first, nick, mail, pass1, pass2)
print html_footer
folgende Fehlermeldung:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, none@none.ch and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Woran liegt das? Die Scripts sollten doch vom Resultat her eigentlich identisch sein, oder?
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Hi,
Schau mal genau hin:

Code: Alles auswählen

if form.has_key('lastname'):
    last = ['lastname'].value
else: 
    ...
:-)
MfG
Andreas

P.S Ich seh grad, das erste Beispiel sollte so auch nicht funktionieren.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Guck doch mal in den error.log, dort steht sicher eine Fehlermeldung
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Uuups, da habe ich eine veraltete Version gepostet. Das passiert gerne, wenn man das Zeugs immer hochladen muss. Nichtsdestotrotz, nach der Korrektur des Dictionary Aufrufs krieg ich immer noch die Fehlermeldung, obwohl die Dateien ausführbar sind
Gast

Könnte mir nochmal jemand damit helfen? Irgendwie raffe ich das nicht. Ich versuche das jetzt schon zum zweiten Mal und kriege es einfach immer noch nicht hin. Wieder obige Fehlermeldung mit folgendem Script:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os, html_base, html_main, Cookie, cgitb, cgi
cgitb.enable()
form = cgi.FieldStorage()            # parse form data

if form.has_key('profile'):
    profile = form['profile'].value
else:
    profile = "none"
if form.has_key('login'):
    login = form['login'].value
else:
    login = "none"
if form.has_key('passwd'):
    passwd = form['passwd'].value
else:
    passwd = "none"
    
if profile=="privat" and login=="OPB" and passwd=="furie":
    cookie=Cookie.SmartCookie()
    cookie["login"]=login
    cookie["passwd"]=passwd
    cookie["profile"]=profile
    html_main = html_main.main_privat
    menu = html_base.menu_privat
    print "Content-type: text/html"      # plus blank line
    print cookie
    print
    head = html_base.htm_head
    print head
    header =  html_base.title
    print header    
    print menu
    print html_main
    foot = html_base.htm_foot
    footer = html_base.footer
    print footer
    print "<!- " + profile + passwd + login + " ->"
    print foot

else:
    html_main = html_main.main_login
    menu = html_base.menu_start
    print "Content-type: text/html"      # plus blank line
    print
    head = html_base.htm_head
    print head
    header =  html_base.title
    print header    
    print menu
    print html_main
    foot = html_base.htm_foot
    footer = html_base.footer
    print footer
    print "<!- " + profile + passwd + login + "->"
    print foot
Was meinte eigentlich XT@ngel mit "schau genau hin"? Laut meinen Dokumentationen sollte die Scheisse stimmen.
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Sorry, habe erst gerade gemerkt, dass ich vorhin nicht eingeloggt war!
Der Post vorhin wäre also von mir...
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrrrgggghhhhh!

Was soll die Scheisse?

Wenn ich folgendes Script lokal ausführe, um es zu testen:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import cgi, os

cgi.test()
krieg ich das:

Code: Alles auswählen

bash-2.05b$ python cgi.py
Traceback (most recent call last):
  File "cgi.py", line 4, in ?
    import cgi, os
  File "/home/william/Webmastering/mediamonger.ch/work/cgi.py", line 6, in ?
    cgi.test()
AttributeError: 'module' object has no attribute 'test'
Dabei sollte doch das Script so funktionieren??? Jedenfalls ist das inetwa was auf jeder Website zu dem Thema steht. Ich könnte echt kotzen!!! Kann mir BITTE mal jemand erklären welchen Volldeppen Fehler ich mache???
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Clython hat geschrieben:

Code: Alles auswählen

import cgi, os

Code: Alles auswählen

bash-2.05b$ python cgi.py
Du importierst nicht das cgi Modul von Python, sondern deine eigene Datei ;) Benenne dein Test-Skript um nach z.B. cgitest.py, dann sollte es gehen...

Du deinem gr0ßem Skript von oben: Ich alles Auskommentieren und nach und nach Zeilen wieder reinnehmen und sehen ob es auf dem Server läuft... So kannst du die Stelle einkreisen, in dem der Fehler steckt...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Gaaarglllgrrrrrrbrrrmmmm

Anfängerfehler Haaaaaarg!

Danke Jens. Hab die cgi.py Dateien gekillt...
Antworten