cgicorner.ch

Informationen rund um Perl/CGI

Sie sind hier: Home > Knowledge Base > UNIX- und Browser-Pfad

UNIX- und Browser-Pfad

Die Scripte von cgicorner.ch benötigen immer wieder sogenannte UNIX- oder Browerpfade. Was sind das für Pfade? Worin liegt der Unterschied? Wo finde ich den UNIX- und Browserpfad für meinen Webserver?

Browser-Pfad

Der Browser-Pfad ist für die meisten Anwender besser verständlich, weil sie diesen um täglichen Umgang mit Ihrer Webseite an diversen Stellen benötigen: beim Setzen von Links, einfügen von Bildern oder Verweise auf ein CSS-Stylesheet.

Einfach gesagt ist der Browser-Pfad die URL, welche im Browser ersichtlich ist, entweder inkl. Domain-Angabe, absolut gegenüber / oder relativ zur URL des entsprechenden CGI-Scripts (nicht empfohlen). Dies kann so aussehen:

  • http://www.meinserver.ch/meinordner/meinedatei.txt
  • /meinordner/meinedatei.txt
  • ../../meinordner/meinedatei.txt (wenn das Script unter /cgi-bin/meinscript/meinscript.cgi liegt)

In der Regel empfiehlt sich die Angabe der absoluten Variante ohne Domain-Name, also jene mit einem führenden /

Die Korrektheit der Browser-Pfades kann ganz einfach getestet werden, indem man den Pfad einfach in die Adressleiste des Browsers eintippt (bei der Variante mit führendem / natürlich noch inkl. Domainname). Danach sollte die entsprechende Datei angezeigt werden können.

Meldet der Browser einen Fehler 404, stimmt der Browser-Pfad nicht, meldet er stattdessen einen "Internal Server Error" deutet dies darauf hin, dass der Browser-Pfad auf eine Datei innerhalb des Ordners cgi-bin verweist, die Sicherheitseinstellungen des Webservers aber in diesem Verzeichnis nur Scripte und keine HTML-Dateien oder Bilder erlauben. In diesem Fall sollte(n) die entsprechende(n) Datei(en) in einen Ordner ausserhalb von cgi-bin verschoben und der Browser-Pfad dementsprechend angepasst werden.

Kurz gesagt: ein Browser kann nur mit Browser-Pfaden etwas anfangen, da ihn nicht der physikalische Speicherort der Datei interessiert, sondern er dem Webserver eine Anfrage im Stil von "gib mir die Datei test.htm im Ordner meintest für die Domain www.testonly.ch" stellt. Es ist Sache des Webservers, aus dieser Anfrage die korrekte Datei auf der Festplatte zu finden.

UNIX-Pfad

Der UNIX-Pfad ist etwas komplizierter, da man im täglichen Umgang mit Webseiten selten auf ihn stosst. Grundsätzlich gibt dieser den Ort der Datei innerhalb des Dateisystemes wieder (egal ob UNIX- oder Windows-Server). Die Webseite liegt ja nie direkt unter / (UNIX) bzw. C:\ (Windows), sondern meist in einem Ordner wie z.B. /var/www/web123/html (UNIX) oder C:\Programme\Apache\htdocs (Windows). Dies wäre aus mehreren Gründen absolut schwachsinnig:

  • dann wäre z.B. das Windows Verzeichnis via http://www.server.ch/Windows zugänglich
  • du würdest via FTP den gesamten Server sehen
  • dein Hosting-Anbieter könnte nur eine Webseite pro Server hosten

Die Angabe von / würde nun aber direkt auf / bzw. c:\ verweisen und somit einen Fehler verursachen.

Scripte wie env oder jsDiag helfen dabei, den absoluten UNIX-Pfad auf dem eigenen Webserver rauszufinden. Diesen findet man häufig bei "DOCUMENT_ROOT", "SCRIPT_FILENAME" oder "PATH_TRANSLATED".

Nachfolgende Hinweise beziehen sich nun auf diesen Server, dessen Umgebungsvariablen unter http://www.cgicorner.ch/cgi-bin/tools/env.cgi angesehen werden können. Wir gehen davon aus, dass unter Script /cgi-bin/env.cgi auf die Datei von oben (/meinordner/meinedatei.txt zugreifen will. In diesem Fall könnten wir folgende UNIX-Pfade verwenden:

  • /home/.sites/143/site2/web/meinordner/meinedatei.txt
  • ../../meinordner/meinedatei.txt

Oder in anderen Worten: die Datei http://www.cgicorner.ch/index.shtml (oder als absoluten Browser-Pfad ohne Domain-Name "/index.shtml") liegt im Dateisystem an folgender Stelle: /home/.sites/143/site2/web/index.html. Somit kann man also sagen, dass der UNIX-Pfad dem Browser-Pfad mit vorangestelltem "/home/.sites/143/site2/web" entspricht.

Etwas schwieriger wird in den Konfigurationen, wo das cgi-bin Verzeichnis ausserhalb des Verzeichnisses mit den HTML-Dateien liegt. Dies ist beispielsweise bei einer Standard-Konfiguration des Apache-Webservers der Fall, somit auch bei Ablegern wie XAMPP etc. Hier ist es so, dass bei einem FTP-Zugriff ein Ordner cgi-bin und ein zweiter wie htdocs angezeigt wird. Innerhalb von htdocs befinden sich die HTML- und PHP-Seiten, dort existiert aber kein Ordner "cgi-bin" mehr. Dies kann so aussehen (mal mit Windows-Pfadangaben)

C:
 ¦-- Programme
     ¦-- Apache
         ¦-- cgi-bin
         ¦   ¦-- meinscript
         ¦       ¦-- meinscript.cgi
         ¦-- htdocs
             ¦-- meinordner
                 ¦-- meinedatei.txt

In diesem Fall liegt das Script im UNIX-Pfad /Programme/Apache/cgi-bin/meinscript/meinscript.cgi und die Textdatei unter /Programme/Apache/htdocs/meinordner/meinedatei.txt. Der UNIX-Pfad wäre also:

  • /Programme/Apache/htdocs/meinordner/meinedatei.txt
  • ../../htdocs/meinordner/meinedatei.txt

Kurz gesagt: Dateien, welche das CGI-Script auslesen oder schreiben muss, benötigen immer UNIX-Pfade, da das Script direkt auf das Dateisystem zugreift und nicht über einen "Zwischenhändler" wie einen Webserver zurückgreifen will.

Warum zwei unterschiedliche Angaben?

Nachdem nun hoffentlich die einzelnen Pfadangaben etwas klarer geworden sind stellt sich noch die Frage, warum sowohl UNIX- als auch Browserpfade benötigt werden. Die Antwort ist relativ einfach:

Bei Dateien, welche ein CGI-Script unverändert anzeigen muss, wird der Browser-Pfad benötigt. Browser-Pfade sind meistens im Quelltext der ausgegebenen HTML-Seite ersichtlich, z.B. bei Bildern

Bei Dateien, welche ein CGI-Script verarbeiten muss, wird der UNIX-Pfad benötigt: hier muss das Script eine Datei im Dateisystem finden und öffnen (wenn Sie beispielsweise eine Worddokument öffnen wollen benötigen Sie auch genaue Infos wo die Datei liegt).

Dann gibt es auch noch Fälle, bei denen eine Pfadangabe sowohl als UNIX- als auch als Browser-Pfad benötigt wird. Dies ist bei vielen Scripten der Fall, beispielsweise jsCards: hier muss das Script alle Dateien im einem Ordner auslesen können, damit das Script weiss, was sich alles für Grusskarten-Motive im System befinden. Dazu ist der UNIX-Pfad notwendig, da das Script effektiv auf der Festplatte nach Bildern suchen muss. In einem zweiten Schritt müssen die Motive aber auch im Webbrowser dargestellt werden könenn, damit der Besucher ein Motiv auswählen kann. Für diesen Zweck erstellt das Script dynamisch eine Webseite, welche dann natürlich die Browser-Pfade enthalten muss.

 

Autor: Jürg Sommer, knowledge@cgicorner.ch

[ zurück ]