na gut…
es darf nicht verwechselt werden zwischen cgi-binary oder modul und nutzen der cgi-umgebung.
cgi selbst wird als module (mod_cgi) eingebunden.
ebenso werden die tools, um cgi nutzen zu können vom server bereitgestellt. (perl, php, python)
Die CGI-Umgebungsvariablen (environment variables) sind festgelegte, namentlich nicht veränderbare Variablen, welche beim Aufruf eines CGI-Skripts in der CGI-Schnittstelle automatisch ihre entsprechenden Werten zugewiesen bekommen.
Die Umgebungsvariablen sind in Form eines Hashes namens %ENV organisiert und damit über die entsprechende Methodik in Perl auslesbar.
Sie sind aufgrund ihrer wichtigen Informationen beispielsweise zum Browser des Clients, zum Server, zum aufrufenden CGI-Skript, u.a. sehr nützlich. Des Weiteren werden als eines der wichtigsten Umgebungsvariablen auch Inhalte der Felder eines Formulars, welches das Skript via POST aufrief, in die CGI-Schnittstellen-Umgebung geschrieben. Sie sind aus dem STDIN mit Hilfe der Variable $ENV{„CONTENT_LENGTH“} auslesbar. Mehr Informationen dazu erhalten Sie im entsprechenden Abschnitt.
Bei einigen dieser Umgebungsvariablen ist es auch möglich selbst ihre Werte zu verändern.
Die Verfügbarkeit der Umgebungsvariablen hängt von der Konfiguration des Servers ab! So zum Beispiel ließe sich eine zeilenweise Auflistung der auf dem Server verfügbaren Umgebungsvariablen realisieren:
Übersicht wichtiger CGI-Umgebungsvariablen
Die nachfolgende Übersicht enthält die wichtigsten CGI-Umgebungsvariablen, deren Wert teilweise nur gespeichert wird, wenn es die Konfiguration des Servers zulässt:
Schlüsselname in %ENV Enthält
CONTENT_LENGTH Anzahl der übergebenen Zeichen nach Aufruf des CGI-Skripts mit POST
CONTENT_TYPE Mime-Type des Datenstroms bei Aufruf des CGI-Skripts mit POST
DOCUMENT_ROOT Pfadnamen des Wurzelverzeichnisses
GATEWAY_INTERFACE Version der auf dem Server installierten CGI-Schnittstelle
HTTP _ACCEPT Liste aller Mime-Types, welche der Browser des Clients unterstützt (*/* bedeutet, dass alle Mime-Types von ihm unterstützt werden)
HTTP _ACCEPT_ENCODING Kodierungsfähigkeiten des Client-Browsers (z.B.: gzip, deflate)
HTTP _ACCEPT_LANGUAGE Landessprache des Client-Browsers
HTTP _COOKIE Cookienamen und -werte, wenn vom Client-Browser gesendet; Durch @Cookies = split(/[;,]\s*/,$ENV{’ HTTP _COOKIE’}); lässt sich ein Array @Cookies mit Name-Wert-Paarungen (getrennt durch =) erzeugen
HTTP _HOST Domain oder IP des Servers auf dem das CGI-Skript ausgeführt wird
HTTP _REFERER URL, von der aus das CGI-Skript aufgerufen wurde
HTTP _USER_AGENT Name und Version des Client-Browsers (z.B.: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1))
PATH_INFO Teilzeichenkette nach Pfad des aufgerufenen CGI-Skripts und vor dem ersten Fragezeichen (?); von Interesse, wenn ein Pfadname direkt nachURLdes CGI-Skripts als Parameter mit GET übergeben wird
QUERY_STRING Zeichenkette, welche dem CGI-Skript mit GET übergeben wurde
REMOTE_ADDR IP des Rechners/Servers, über den das CGI-Skript aufgerufen wurde
REMOTE_HOST Hostname des Rechners/Servers, über den das CGI-Skript aufgerufen wurde
REMOTE_IDENT Protokollinformationen, wenn auf dem Server das Protokoll ident für geschützte Zugriffe installiert ist
REMOTE_PORT Port des Client-Rechners, über den das CGI-Skript aufgerufen wurde
REMOTE_USER Name des aufrufenden Users, welcher auf das CGI-Skript zugreifen möchte (nur bei Server-Authentifizierung, z.B. htaccess)
REQUEST_METHOD Information, ob das CGI-Skript mit POST oder GET aufgerufen wurde
REQUEST_URI HTTP-Pfad des CGI-Skripts inkl. übergebene Daten (z.B. /cgi-bin/ Perl test.cgi?new)
SCRIPT_NAME HTTP-Pfad des CGI-Skripts (z.B.: /cgi-bin/ Perl test.cgi)
SCRIPT_FILE_NAME physischen Pfad des CGI-Skript (z.B.: /usr/bin/cgi-bin/ Perl test.cgi)
SERVER_ADDR IP des Servers
SERVER_ADMIN Emaildresse des Server-Admins laut Serverkonfiguration
SERVER_NAME Name des Servers; i.d.R. Hostname des Servers
SERVER_PORT Post des Servers (Standard: 80)
SERVER_PROTOCOL Version des vom Server unterstützten HTTP-Protokolls
SERVER-SIGNATURE Signatur des Servers (z.B. Apache /2.0.39 Server at localhost Port 80)
SERVER_SOFTWARE Name und Version des Servers (z.B. Apache /2.0.39 (Win32))
SYSTEMROOT Wurzelverzeichnis des Server-Betriebssystems
* mod_php
Performant oder anders gesagt der Server kann auch etwas älter sein bzw. im shared Hosting Bereich können sich mehr Kunden einen Server teilen. Allerdings weniger sicher und komfortabel.
* PHP CGI (verwendet bevorzugt von „MassenServern“)
Benötigt mehr Ressourcen, für den Seitenbetreiber um einiges komfortabler und durch die Möglichkeit die Rechte restriktiver zu verteilen größere Sicherheit.
gruß
klaus