CGI-Scripte und php3 bei INKA
Allgemeines
Jeder INKA-Kunde hat die Möglichkeit in seinen WWW-Seiten auch CGI-Scripte
einzusetzen. Da der Userrechner ein Linux-Rechnersystem ist, ist eine
Vielzahl verschiedener Scriptsprachen (Shellscripte,
perl,
python etc.) verfügbar.
Eine Ausführung von Windows/DOS CGI-Programme ist jedoch nicht möglich.
Auch unterstützt der Server keine Frontpage-Extensions. Eine Alternative stellt
vielleicht
php3 dar, was ebenfalls auf dem
Userrechner zur Verfügung steht.
Das Verzeichnis cgi-bin
Das Zielverzeichnis für die CGI-Scripte nennt sich cgi-bin und befindet sich
im öffentlichen Bereich des INKA-User-WWW Server. Sie erreichen es mit "cd
/public/W
xxxx/cgi-bin". Jeder INKA-User hat natürlich sein eigenes
cgi-bin Verzeichnis.
Das cgi-bin Verzeichnis muß mit den richtigen Unix-Zugriffsrechten (0701
oder Owner Read/Write/Execute, Group None, Other Execute) ausgerüstet sein.
INKA legt standardmäßig dieses Verzeichnis bei der Einrichtung des Zuganges
an. Sollten die Zugriffsrechte des Verzeichnis einmal nicht mehr stimmen,
so können Sie dies selbst mit einem FTP-Client oder über den Shellzugang auf
den INKA-Userrechners korrigieren.
php3
php3 können Sie in allen HTML-Seiten Ihres Webangebots verwenden. Wichtig
ist dabei, dass die Datei auf .phtml oder .php3 endet. Nur in solchen Dateien
werden php3 Befehle ausgeführt. Damit auch Befehle wie include oder exec
zur Verfügung stehen, ist php3 bei uns als CGI installiert. Damit ist
sichergestellt, dass die php3 Befehle unter der richtigen Userid ausgeführt
werden. Aus diesem Grund sind php3 Seiten im cgi-bin Verzeichnis leider nicht
möglich. Weitere Informationen, was alles mit php3 möglich ist, finden
Sie auf der php3-Homepage.
Upload
Laden Sie die CGI-Scripte immer im ASCII-Modus Ihres FTP-Clients auf
den INKA-Userrechner. Beachten Sie, daß die Dateirechte für das CGI-Script
auf 0700 stehen müssen (Owner Read/Write/Execute, Group None, Other None).
Sie können diese Rechte wiederum über Ihren FTP-Client oder über den
Shellzugang einstellen. Direkt im Linux-Shellzugriff (z.B. über
ssh oder telnet) gehen Sie wie folgt vor:
$ chmod 0700 /public/Wxxxx/cgi-bin/scriptname
Anpassung der CGI-Scripte
Viele CGI-Scripte müssen auf die Gegebenheiten des Userrechners angepasst
werden. Dabei sind folgenden Pfade wichtig:
- CGI-Heimatverzeichnis: /public/Wxxxx/cgi-bin
- sendmail: /usr/lib/sendmail
- date: /bin/date
- perl: /usr/bin/perl
- sh: /bin/sh
Übrigens: Alle
perl-Scripte müssen in der ersten
Zeile
#!/usr/bin/perl
enthalten, damit Sie richtig funktionieren.
Ähnliches gilt für SHELL-Scripte, die meist mit
#!/bin/bash
beginnen.
Troubleshooting
Leider sind häufig Fehlermeldungen, die der Webserver bei einem fehlerhaften
CGI-Script liefert, nicht besonders aussagekräftig. So werden Sie unter
anderem mit folgender Fehlermeldung konfrontiert:
Internal Server Error
The server encountered an internal error or misconfiguration and
was unable to complete your request.
Please contact the server administrator, webmaster@inka.de and
inform them of the time the error occurred, and anything you might
have done that may have caused the error.
Premature end of script headers:
/sda7/public/W9999/cgi-bin/beispiel.cgi
Vielleicht können folgende Hinweise in einem solchen Fall weiterhelfen:
Jedes CGI-Script muß als erste Ausgabe den Text "Content-type:
text/html\n\n" liefern. Wenn dies nicht geschieht, z.B. aufgrund eines
Ausführungsfehlers, wird obige Fehlermeldung erscheinen. Als mögliche
Ursachen kommen dabei in Frage:
- Tippfehler im CGI-Script
- Falsche Zeilenenden durch BINARY FTP-Übertragung von DOS/Windows-Textdateien
auf den INKA-Userrechner.
Am einfachsten lassen sich Ausführungsfehler des CGI-Script durch direktes
Starten auf dem Userrechner herausfinden.
Erhält man bei einem perl-Script z.B. die Fehlermeldung:
Illegal character \015 (carriage return) at script.pl line 2.
(Maybe you didn't strip carriage returns after a network transfer?)
so ist das perl-Script auf DOS/Windows erstellt und im BINARY-Modus des
FTP-Clients auf den INKA-Userrechner hochgeladen worden.
Dies hat zur Folge, daß die Zeilenenden statt mit LineFeed (unter Linux/Unix
nötig) mit CarriageReturn/LineFeed enden. Diese Datei läßt sich dann auf dem
Userrechner nicht ausführen.
Hier hilft nur, die Datei wie vorgeschlagen im ASCII-Modus des FTP-Clients
hochladen oder ein direktes Ändern der Zeilenenden mit dem Unix-Programm
dos2unix. Letzteres setzt allerdings Linux/Unix-Grundkenntnisse voraus, da
dieser Befehl nur im Linux-Shellzugriff des INKA-Userrechner zur Verfügung
steht.
Zurück zur Homepage-Anleitung
Zuletzt geändert
am 23.06.2001