CGI-Scripts


CGI ist eine Abkürzung für "Common Gateway Interface". Dies erlaubt dem Webserver Programme über HTML-Seiten zu starten. Dies können Shell-Scripts, C-Programme und vor allem Perl-Programme sein.

Eine wichtige Anwendung ist die Bearbeitung von Online-Formularen. Wenn ein Anwender die Felder im Browser ausfüllt und dem SUBMIT-Knopf drückt. So werden diese Daten einem Programm übergeben, das diese Daten verarbeitet. Es kann eine Mail verschickt werden, oder eine neue HTML-Seite daraus erzeugt werden.

Bitte achten Sie darauf, daß Ihre cgi-Programme nicht zuviel Rechenleistung beanspruchen.

Die CGI-Programmierung ist relativ heikel und hat schon manche erfahrene Programmierer zur Verzweiflung gebracht. Wundern Sie sich also nicht, wenn nicht alles auf Anhieb klappt. Außerdem empfehlen wir dringend die Anschaffung von einem oder mehreren einschlägigen Büchern, Beteiligung an entsprechenden Newsgroups (z.B. de.comm.infosystems.www.authoring, de.comp.lang.perl) und Besuch der CGI- und Perl-Homepages.

Auf unseren Servern können die CGI-Scripts sowohl im cgi-bin-Verzeichnis als auch in jedem anderen Verzeichnis installiert werden.

Die mitgelieferten cgi-Programme stehen weitgehend im Verzeichnis /home/domain/www/cgi-bin. Für die Pfade Ihrer Domain siehe Server-Pfade.

Internal Server Error & Document contains no Data

Das Nichtfunktionieren eines Programmes hängt von vielen kleinen Faktoren ab, und es gibt quasi nur zwei unterschiedliche Fehlermeldungen:

  • Internal Server Error
  • Document contains no Data

Beide können nahezu alles bedeuten. An vernünftiges Debuggen ist gar nicht zu denken.

Daher ist es wichtig, die ganzen kleinen Regeln beim Hochladen und chmodden zu beachten.

Regeln, damit ein Programm funktioniert

Ein Programm muß folgende Regeln beachten, um zu laufen, wenn innerhalb des Programmes alles richtig ist

  • Perl-Programme, ASCII-Dateien und HTML-Dateien müssen unbedingt im ASCII-Mode hochgeladen werden. Im Binary-Format funktionieren sie nicht, wegen der Zeilenumbrüche, die unter Unix nur aus LF und nicht aus CRLF bestehen.
  • Es muß sich in einem ausführbaren Verzeichnis befinden (chmod 777).
  • Es muß ausführbar sein (chmod 755.
  • Die zugehörigen Dateien, die beschrieben werden sollen, müssen Schreibrechte haben (chmod a+w).

Wenn diese Punkte alle korrekt sind, wird ein Fehler wahrscheinlich im Programmcode selbst liegen. Folgendes ist möglich bzw. wahrscheinlich:

  • Die Pfade zu den einzelnen Dateien sind nicht richtig. Beachten Sie, daß das Programm zum Öffnen und Schreiben einer Datei die realen Pfade, für Links, die über den Browser bedient werden sollen, jedoch eine Url. Die beiden Sorten sind unterschiedlich:
    Realpfad: /www/domain/
    Url: http://domain.nam/ bzw. http://www.domain.nam/
  • Der Pfad zum cgi-bin-Verzeichnis ist nicht richtig gesetzt. Auf unseren Servern wird statt dem Namen "cgi-bin", ein Verzeichnis "cgi-domain" verwendet. Dies ist in den meisten Installationsanweisungen für Scripts nicht berücksichtigt.
  • Irgendwo steckt ein kleiner Syntaxfehler (z.B. fehlendes ";")
  • Die Klammern sind unvollständig gesetzt.

Mitgelieferte C-Programme

"cgiemail" ist ein C-Programm, das Ihnen den Inhalt der ausgefüllten Felder per Email zukommen läßt. Dies ist besonders für Umfragen/Anfragen sinnvoll. Die Datei order.htm ist ein Beispiel für die Nutzung von cgiemail.

"imagemap" ist ein anderes cgi-Programm. Hier werden die X/Y-Koordinaten eines Bildes mit einer Tabelle verglichen und so unterschiedliche Links aufgerufen.


Home