CGI (Common Gateway Interface) wird für Interaktive Inhalte einer HTML-Seite verwendet. CGI erlaubt es einem WWW-Browser, über einen WWW-Server Programme auszuführen. Solche Programme, meist Skripts genannt, hat jeder schon einmal gesehen oder gar benutzt. Beispiele sind zB. Besucherzähler, Gästebücher, Diskussionsforen, Suchmaschinen oder Linklisten.
Vorteile von CGI gegenüber Java und Javascript.CGI Skripte sind zwar nicht immer leicht zu installieren, haben aber gegenüber Java und Javascript -Anwendungen klare Vorteile. CGI ist Browserunabhängig, es ist meist schnell in der Ausführung der Anwendung, es ist vielseitig einsetzbar und trägt zur Interaktivität des WWW bei.
Was wird für den Einsatz von CGI benötigt?Der Webserver, auf dem ihre Homepage liegt muß CGI-fähig sein, das heißt er muß die Ausführung von CGI-Skripten zulassen, wozu Perl installiert sein muß. Die meisten Anbieter, vor allem von kostenlosen Webspace, bieten diese Grundvoraussetzung aus verschiedenen Gründen leider nicht an.
Dazu gehöhren zB:
AOL, T-Online, Metronet, GermanyNet, Compuserve, Okay.net, aber auch Tripod, Xoom, Geocities, Fortunecity und noch viele andere.
Ob Ihr Server CGI unterstützt sehen Sie daran, ob in dem Homeverzeichnis (das Verzeichnis wo Sie alle HTML-Seiten ablegen) ein Verzeichnis mit dem Namen cgi-bin existiert. Im Zweifelsfall fragen Sie den Serververwalter oder man schaut mal in die Support oder FAQ-Seiten des Anbieters.
Wenn man CGI-Scripte nutzen darf, dann benötigt man noch einige Pfadangaben, die später für die Installation der Skripte sehr wichtig sind. Als da währen:
BaseDir, auch Stamm, Home oder Hauptverzeichnis genant, der Pfad zu ihrem Verzeichnis auf dem Webserver, aber nicht die URL:
zB: "/home/ihre-id/public_html/"
Perl, der Pfad zu Perl, steht am Anfang von jedem Skript
meistens: "/usr/bin/perl" oder "/usr/local/bin/perl"
Sendmail, Pfad zum Sendeprogramm für E-Mails
meistens: " /usr/sbin/sendmail"
Date, der Pfad zum Programm welches das Datum angibt
meistens: "/usr/bin/date"
Diese Angaben können Sie ebenfalls aus den FAQ-Seiten, oder vom Serververwalter ihres Speicherplatzanbieters erhalten.
Achtung: Einige CGI Skripte setzen SSI (Server Side Include) voraus, einige wenige Anbieter bieten das aber nicht an, obwohl Sie trotzdem CGI ausführen können. In diesem Fall kann man nur CGI-Scripte einsetzen, die SSI nicht benötigen
Der Upload und das richtige setzen von Dateirechten ist mit der wichtigste Vorgang, damit das CGI-Script später auch richtig funktioniert.
Bei einigen Servern muß das CGI-Script immer in das Verzeichnis cgi-bin upgeloadet werden, während bei anderen Servern das CGI-Script in jedem beliebigen Verzeichnis arbeiten kann.
CGI-Scripte ( haben meist die Endung".cgi" oder manchmal auch ".pl") müssen mit einem FTP-Programm ( zB. WS-Ftp, oder CuteFTP) immer im ASCII-Modus übertragen werden.
Anschließend muß man noch die Rechte für das Skript und alle anderen Daten und Dateien, die das jeweilige Skript benutzt, vergeben. Eine falsche Vergabe ist meist die Hauptursache, wenn das Skript nicht funktioniert.
Das setzen von Rechten geschieht mittels sogenannten CHMOD's. Jetzt werden Sie sicher fragen: "Was ist das nun schon wieder ???" Ganz einfach, CHMOD's sind Skripteinstellungen, welche sich nach dessen Einsatzzweck richten. Hierbei unterscheidet man zwischen drei Arten, es gibt:
Leserechte, Schreibrechte, und Ausführungsrechte .
CHMOD werden durch das FTP-Programm vergeben, indem man das jeweilige Skript oder die jeweilige Datei mit der rechten Maustaste anklickt und im Kontextmenue auf einen Eintrag namens "Change file attributes", "Commands", "FTP-Commands" oder ähnliches (vom jeweiligen FTP-Programm, das Sie benutzen abhängig)
Nachfolgend sind die vier am häufigsten vorkommenden CHMOD's am Beispiel WS-Ftp32 erklärt. In der englischen Version lauten die Attribute "Read", "Write" und "Execute":



Bei vielen FTP-Programmen (zB. CuteFTP) kann man auch die CHMOD Ziffer direkt in eine Auswahlbox eingeben., man gibt dann einfach nur die Ziffer ohne den Zusatz Chmod ein.
Die Einstellungen, die bei den verschiedenen Skripten notwendig sind, erfährt man immer aus einer Readme-Datei, die der Zip-Datei des Skriptes meist immer beiliegt, allerdings oftmals in Englisch ist.
Beachten Sie, das diese Einstellungen immer erst nach dem Upload auf den WWW-Server erfolgen können. Ihre Skripte müssen dazu also bereits auf dem WWW-Server lagern.
Zurück zu unserem Beispiel Skript eines Counters
Die Datei "counter.cgi" im Verzeichnis cgi-bin wird mit CHMOD 755 versehen.
Die Datei "counter.txt" im Verzeichnis counter wird mit CHMOD 666 versehen.
Wenn man nun im Browser die Datei "counter.cgi" bzw die HTML-Seite, wo der Counter eingebunden ist, aufruft, dann sollte man die Ziffern des Counters sehen, wobei der Counter auf 000001 stehen sollte.
Wenn Sie diese Anzeige sehen, dann haben Sie es geschafft, und ihre erste CGI-Anwendung für ihre Webseiten fertig konfiguriert.
Sie sollten nun in der Lage sein, auch andere CGI-Skripte auf ihre Webseiten abzustimmen.
CGI Scripte werden in den Verzeichnissen des Scriptes selbst ausgeführt. Es muß im Verzeichnis ein cgi-bin Verzeichnis erstellt werden.
Beispiel:
Ein CGI Script benötigt ein Verzeichnis / Test Legen sie also das Verzeichnis /Test an. In dem Verzeichnis Test legen Sie nun das Verzeichnis /cgi-bin an.
Somit lautet der Document root zum cgi-bin Verzeichnis:
/var/www/Loginnummer/html/cgi-bin/.......
Hallo Freunde von Comball Net
hier kurz ein paar Informationen, was beim Auftreten eines
internen Servererrors zu beachten ist.
Sie versuchen beispielsweise ein CGI/Perl-Script auszuführen
und erhalten diese Fehlermeldung?
Bei der Verwendung von CGI/Perl gibt es grundlegende
Vorgehensweisen und wichtige Informationen. Da dieser Fehler
unzählige Ursachen haben kann hier nur einige Stichpunkte,
worauf bei Verwendung von CGI-Scripts geachtet werden muss.
Sind alle Pfade im Script richtig gesetzt?
Vor allem dem Perl- und Sendmailpfad sind in nahezu allen
Skripten verlangt.
Sind alle Permissions (Zugriffsrechte) richtig eingestellt?
Auch die Permissions zu evt. vom Script eingelesenen Dateien
prüfen! Die Rechte sollten für gewöhnlich auf 755 eingestellt
werden. Auch darauf achten, dass man keine Schreibrechte für
Others (Welt) einstellt. Hier kann es vorkommen, dass der
Sicherheitsmechanismus suEXEC greift und zu einem Fehler führt.
Wurde das Script im Unix Zeichensatz gespeichert?
Ist dies nicht der Fall stimmen die Zeilenumbrüche und dadurch
auch die meisten Pfadangaben nicht.
Wurde das Script im ASCII-Modus übertragen?
Textdateien, Scripts und ähnliches müssen mit dem FTP-Programm
als ASCII übertragen werden. Bilder, Programme und ähnliches im
Binärmodus
Wurde bei Perl-Scripts der "Content-Type" definiert?
Perl Scripts verlangen bei Ausgaben auf dem Browser nach einem
definierten Content-Type. Dies wird meist durch den Befehl
'print "Content-Type: text/html";'
erreicht. Ist dieser Befehl nicht vorhanden findet sich im
Fehlerlog des Servers bei Aufruf ein Fehler der Art "permature
end of script headers"
Wenn Sie all diese Punkte beachtet haben und Ihr Script danach
immer noch nicht funktionieren sollte liegt es in 95% der Fälle
wirklich an einem Programmierfehler.
