Seite 1 von 1

führt localhost:8080/cgi-bin/cgi.py nicht aus

Verfasst: Freitag 29. Oktober 2010, 06:43
von Dadapf
Guten Morgen,

ich hoffe, in dieser Rubrik richtig zu sein.
Ich habe unter .../httpServer den Python-http-Server laufen:

Code: Alles auswählen

  #! /usr/bin/python
  # -*- coding: utf-8 -*-
  from BaseHTTPServer import HTTPServer
  from CGIHTTPServer import CGIHTTPRequestHandler
  Serveradresse = ('', 8080)
  Server = HTTPServer(Serveradresse, CGIHTTPRequestHandler)
  Server.serve_forever()
Unter .../httpServer/cgi-bin/ steht das Skript cgi.py. Doch der Browser (firefox und opera, unter opensuse) vermelden beim Aufruf von http://localhost:8080/cgi-bin/cgi.py nur: Error code 404, No such CGI script ('/cgi-bin/cgi.py').
Spaßeshalber habe ich es auch einmal in .../httpServer geschoben; da findet der Browser es und druckt es in seinem Fenster aus. Tippfehler können es somit nicht sein.
Weiß mir bitte jemand Rat?

Dadapf

A: führt localhost:8080/cgi-bin/cgi.py nicht aus

Verfasst: Freitag 29. Oktober 2010, 08:33
von Dadapf
Nun ja, ich habe den http-Server aus einem anderen Verzeichnis heraus gestartet gehabt ...
Jetzt habe ich ihn unter .../httpServer gestartet; dort wo die Datei auch liegt. Nun findet er die Datei unter .../httpServer/cgi-bin/cgi.py.
Doch er führt sie nicht aus, sondern will sie abspeichern ... Opera bringt nur eine weiße Seite. In cgi.py steht:

Code: Alles auswählen

  #! /usr/bin/python
  # -*- coding: utf-8 -*-
  print '<?xml version="1.0" encoding="UTF-8"?>'
  print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-  strict.dtd">'
  print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">'
  print '   <head>'
  print '   </head>'
  print '   <body>'
  print '			<h1>Assamir - Bilder aus den Bergen, Jahr 2010</h1>'
  print '   </body>'
  print '</html>'
Der html-Text selber ist valide.
Weiß hier jemand Rat?

Dadapf

Re: Änderung: führt localhost:8080/cgi-bin/cgi.py nicht aus

Verfasst: Freitag 29. Oktober 2010, 08:43
von lutz.horn
Kannst Du den Code in Deinen Postings bitte in die entsprechende Tags einschließen?

Re: Änderung: führt localhost:8080/cgi-bin/cgi.py nicht aus

Verfasst: Freitag 29. Oktober 2010, 09:02
von Dadapf
Ohne Javascript funktionierten die oberen Schaltflächen nicht; gut, ich brauche sie nicht unbedingt, habe ich mir gedacht.
Mit Javascript funktionieren sie und schließen mir, z. B. "python", den markierten Text mit [python]...[/python] - grafisch ändert sich sonst nichts.
Erst wenn man BBCode zulässt, ändert sich auch grafisch etwas - nur dies ist nirgendwo beschrieben ...
Zumindest habe ich es nirgendwo gefunden.
Ich hoffe, so ist`s jetzt recht,

Dadapf

Re: Änderung: führt localhost:8080/cgi-bin/cgi.py nicht aus

Verfasst: Freitag 29. Oktober 2010, 11:47
von Hyperion
Auch wenn das das Problem an sich nicht löst: Gibt es einen trifftigen Grund, das alles so low-Level selber zu implementieren? Augenscheinlich macht Dir das ja gerade viele Probleme und wenn ich die HTML-Fragmente richtig deute, geht es Dir eher um Content und nicht um irgend welche Low-Level Architektur-Geschichten...

Re: Änderung: führt localhost:8080/cgi-bin/cgi.py nicht aus

Verfasst: Freitag 29. Oktober 2010, 11:49
von noisefloor
Hallo,

Python CGIs müssen mit den Content-Type und ein Leerzeile vor dem eigentlichen Inhalt ausgeben, sonst funktioniert das nicht.

Ist in der Python-Doku auch erklärt. :-)

EDIT: BTW - wenn da nur HTML ausgeben willst, ist CGI ziemlich überflüssig... ;-)

Gruß, noisefloor

Re: führt localhost:8080/cgi-bin/cgi.py nicht aus // gelöst

Verfasst: Freitag 29. Oktober 2010, 13:36
von Dadapf
zum "low-level": Jain. Ich will einen Teil meiner Internetseiten von statisch auf dynamisch umstellen (Bildergalerien) und muss/sollte das Skript vorher zu Hause testen. Auf meinen Rechnern hier läuft allerdings kein http-Server; daher ist der Python-Server die wirklich einfachste Testmöglichkeit.

> Python CGIs müssen mit den Content-Type und ein Leerzeile vor dem
> eigentlichen Inhalt ausgeben, sonst funktioniert das nicht.
Tja, in meinen beiden (Lern-) Quellen stehen die beiden Zeilen

Code: Alles auswählen

print "Content-type: text/html"
print ""
auch, ich habe es jedoch nicht so interpretiert oder so genau gelesen, dass sie zwingend notwendig sind. Mit den beiden Zeilen funktioniert es.
Vielen Dank,

Dadapf

Re: führt localhost:8080/cgi-bin/cgi.py nicht aus // gelöst

Verfasst: Freitag 29. Oktober 2010, 13:45
von Hyperion
Dadapf hat geschrieben:zum "low-level": Jain.
Bist Du sicher, dass Du Dir dann nicht lieber ein Framework ansehen willst, wie bottle oder flask? Da WSGI basiert, kannst Du es auf so ziemlicher jeder Server-Infrastruktur laufen lassen. Zudem musst Du Dich eben mit solch nervigen Fehlersuchen nicht plagen ;-)

Re: führt localhost:8080/cgi-bin/cgi.py nicht aus // gelöst

Verfasst: Freitag 29. Oktober 2010, 13:50
von Dadapf
Mit Frameworks habe ich mich vor einiger Zeit auch kurz auseinandergesetzt und dann beschlossen, lieber selbst zu schreiben. Die Namen bottle und flask sagen mir jetzt jedoch nichts, werde mal danch suchen.

Dadapf

Re: führt localhost:8080/cgi-bin/cgi.py nicht aus // gelöst

Verfasst: Freitag 29. Oktober 2010, 20:07
von noisefloor
Hallo,
Mit Frameworks habe ich mich vor einiger Zeit auch kurz auseinandergesetzt und dann beschlossen, lieber selbst zu schreiben. Die Namen bottle und flask sagen mir jetzt jedoch nichts, werde mal danch suchen.
Ging mir am Anfang genau so. Aber, es ist in der Tat so: Mit Bottle oder Flask sind kleine Webanwendungen _deutlich_ einfacher zu realisieren. Und die bist ähnlich portabel wie mit CGI, weil sich Bottle und Flask recht einfach an eine Reihe von Servern binden lassen.
Und du bekommst für beide guten Support hier im Forum - direkt von den Autoren. Beide sind hier aktiv. :-)

Gruß, noisefloor