Antworten auf Ihre häufigsten Fragen

Wie kann ich CGI-Skripte verwenden?

In diesem Artikel erfahren Sie mehr über die Nutzung von CGI-Skripten auf unseren Systemen.

Das CGI-Verzeichnis

CGI-Skripte werden in speziellen Verzeichnissen gelagert, um Sie von sonstigen Elementen besser unterscheiden zu können. Standardmäßig befindet sich das CGI-Verzeichnis, welches auf unseren Systemen cgi-bin heißt, unterhalb des Ordners /www. Diese Trennung ist jedoch nur kosmetischer Natur: Die Skripte können auch außerhalb eines cgi-bin-Verzeichnisses gestartet werden; der Übersicht zuliebe ist es aber gegebenenfalls sinnvoll, die Skripte von sonstigen Elementen zu trennen.

Ausführen von CGI-Skripten

Damit CGI-Skripte korrekt ausgeführt werden, sind einige Dinge zu beachten:

Dateiendung
Es werden nur Skripte ausgeführt, deren Endung als CGI eingetragen wurde. Die Liste der zulässigen Dateiendungen können Sie im KIS unter dem Punkt "Produktverwaltung - Ihr Produktbereich - Konfigurieren - Skripte & Datenbanken - Skript-Einstellungen" anpassen.
Dateiformat
Achten Sie darauf, dass Sie keine Windows-Zeilenumbrüche ("CR LF") auf unseren Linux-Servern verwenden ("LF"). Der einfachste Weg dazu ist, die Datei im ASCII-Format hochzuladen. Bei FileZilla können Sie dies beispielsweise in den Einstellungen anpassen:
Dateisystemrechte
Nachdem die Datei erfolgreich hochgeladen wurde, müssen noch die Rechte der Datei per chmod auf 755 gesetzt werden. In FileZilla lässt sich dies per Rechtsklick auf die Datei -> Dateiberechtigungen erledigen:

Damit wird die Datei für den Server als ausführbar gekennzeichnet.
Korrekte Skript-Header
Idealerweise sollten Skripte mit dem Interpreter beginnen, mit dem sie ausgeführt werden sollen. Weiterhin ist für die Anzeige im Webbrowser die Definition eines Content-Types notwendig. Ein einfaches "Hello World!"-Skript in Perl sieht so aus:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello World!";

 Angabe des temporären Verzeichnis bei Verwendung von Perl Skripten mit CGI.pm

In Perl geschriebene CGI-Skripte, die das Modul CGI.pm ("use CGI;") benutzen, verwenden das temporäre Verzeichnis /tmp, um temporäre Daten zwischenzuspeichern. Dieses Verzeichnis ist auf unseren WebHosting Paketen jedoch gesperrt, statt dessen steht Ihnen aus Sicherheitsgründen ein benutzerspezifisches, temporäres Verzeichnis zur Verfügung. Den Pfad zu diesem Verzeichnis finden Sie im KIS unter "Produktverwaltung - Ihr Produktbereich - Konfigurieren - Allgemeines - Allgemeine Informationen". Damit Ihr Skript auch auf unseren WebHosting Paketen funktioniert, muss die Variable für das temporäre Verzeichnis gesetzt werden. Fügen Sie dazu folgenden Code in Ihr CGI-Skript ein:

use CGI;
$CGITempFile::TMPDIRECTORY = '/is/htdocs/user_tmp/wpXXXXXXX_YYYYYYY';
my $cgi = new CGI;

Installation eigener Perl Module

Um eigene Perl Module installieren zu können, legen Sie bitte im Verzeichnis cgi-bin ein Unterverzeichnis mit dem Namen modules an. In diesem Verzeichnis legen Sie Unterverzeichnisse an, welche nach dem ersten Teil des Modul-Namens benannt sind. Im Beispiel beschreiben wir XML::Twig. Also lautet das entsprechende Unterverzeichnis in diesem Falle XML. Falls das Modul weitere eigene Unterverzeichnisse benötigen sollte, legen Sie diese bitte innerhalb des ersten Verzeichnisses an. Für XML::Twig benötigt man z.B. ein Unterverzeichnis Twig in dem die XPath-Schnittstelle XPath.pm angelegt ist. Für unser Beispiel XML::Twig sähe dies wie folgt aus:

/cgi-bin/modules/XML/Twig.pm
/cgi-bin/modules/XML/Twig/XPath.pm

Nun können Sie alle Skripte, welche selbst installierte Module benötigen, nach dem oben genannten Beispiel in cgi-bin/modules ablegen. Alle dort abgelegten Module können Sie dann unkompliziert mit use einbinden:

use lib "/is/htdocs/wpxxxxx_yyyyyyyyy/cgi-bin/modules"

Das Core Modul lib erweitert auf diese Weise den Perl Suchpfad für Module um den Pfad zum Verzeichnis modules. Damit kann Perl alle Abhängigkeiten auflösen, die ihr selbst installiertes Modul mitbringt. Im Beispiel XML::Twig ist das z.B. XML::Parser::Expat, der auf unseren Systemen bereits standardmäßig installiert ist.


otto.friedrich@hosteurope.de xanthippe.ypsilante@hosteurope.de hercules.ikarus@hosteurope.de