MfG
Jobst Title: PATH_INFO - Änderungen in der CGI-Umgebung
Beim Apache 1.1.1 und früheren Versionen, war das Verfahren zum Erzeugen von PATH_INFO in der CGI-Umgebung nicht problemlos und konnte in bestimmten Situationen zum Absturz führen. Mit der Apache-Version 1.2 hat sich dieses Verhalten geändert. Das führte zwar in einigen Fällen zu Kompatibilitätsproblemen mit bestimmten herkömmlichen CGI-Anwendungen, die Apache-Version 1.2 ist aber kompatibel zur CGI-Spezifikation 1.1 und CGI-Skripte sind einfach zu anzupassm (siehe unten ).
Der Apache-Server Version 1.1.1 und frühere Versionen implementierten die Umgebungsvariablen PATH_INFO und SCRIPT_NAME über den Dateinamen und nicht mit der URL. Das führte zwar in vielen Fällen zu richtigen Ergebnissen, lagen jedoch umfangreiche Pfadinformationen vor, dann konnte das zu einem fehlerhaften Verhalten führen. Zum Beispiel konnte die Konfigurationsdatei folgende Zeile enthalten:
In diesem Fall ist user.cgi das CGI-Skript und
/ralph die CGI zu übergebende Information. Kam bei dieser
Konfiguration eine Anfrage nach /cgi-ralph/script/, setzte der
Code PATH_INFO auf /ralph/script und SCRIPT_NAME auf
/cgi-, wobei letzteres offensichtlich nicht korrekt ist. Unter
bestimmten Umständen konnte dies sogar zu einem Server-Absturz
führen.
Seit der Apache-Version 1.2 werden SCRIPT_NAME und PATH_INFO
direkt über die URL bestimmt und festgestellt, wieviel der URL vom Client
modifiziert werden kann und PATH_INFO dieser Wert zugewiesen. Im oben
angeführten Beispiel wird PATH_INFO auf /script und
SCRIPT_NAME auf /cgi-ralph gesetzt. Das ist sinnvoll
und bereitet dem Server keine Probleme. Außerdem wird dadurch garantiert,
dass http://$SERVER_NAME:$SERVER_PORT$SCRIPT_NAME
$PATH_INFO immer eine zulässige URL ist, die auf das aktuelle
Skript verweist, was bei früheren Versionen nicht unbedingt zutraf.
Allerdings geht die Information /ralph aus der
Alias-Direktive verloren. Das ist bedauerlich, aber das
Dateisystem zum Weiterreichen dieser Art von Informationen zu nutzen,
ist nicht empfehlenswert und funktioniert in Verbindung mit Skripten nicht.
Seit der Apache-Version 1.2b3 gibt es jedoch
einen Workaround.
Ein Skript, das für frühere Apache-Versionen oder andere Server entwickelt wurde benötigt möglicherweise die Informationen, die die alte Variable PATH_INFO enthielt. Aus diesem Grund wird seit der Version 1.2 außerdem die Variable FILEPATH_INFO gesetzt. Diese Umgebungsvariable enthält den Wert, den PATH_INFO unter Apache 1.1.1 hätte.
Soll ein Skript mit alten und neuen Versionen funktionieren, wird einfach das Vorhandensein der Variablen FILEPATH_INFO abgefragt und falls vorhanden benutzt. Andernfalls wird PATH_INFO benutzt. In Perl können Sie beispielsweise folgende Anweisung benutzen:
Auf diese Weise funktioniert ein Skript mit allen Servern, die die CGI-Spezifikation 1.1 unterstützen sowie mit allen Versionen des Apache.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
