Raimar Eberhard: Mit einem Skript Dateien in HTML einbinden

Ich möchte eine Seite ohne Verwendung von Frames aufbauen, die Navigation soll daher auf jeder Seite erscheinen. Um nun aber bei möglichen Änderungen nicht jede HTML-Datei einzeln ändern zu müssen, möchte ich via <!--#exec cgi="skript.pl"--> das Navigationsmenü in jede Datei einbinden. Soweit kein Problem, und solange ich das eine Skript nur für eine Datei verwende, klappt es auch (Pfad und Name der einzubindenden Datei stehen im Skript).
Nun sollen aber auch Header und Footer (und evtl. andere "Bausteine" per Perl-Skript in meine Seiten eingebunden werden). Ich könnte jetzt für jede Datei, die ich einbinden möchte, ein eigenes Skript anlegen, was ich aber gelinde gesagt für ziemlichen Schwachsinn halte. Also habe ich versucht, das Skript aufzurufen und gleichzeitig als Parameter den Namen der Datei anzugeben: <!--#exec cgi="skript.pl?datei"--> ... bis ich erfahren habe, dass das bei SSI nicht erlaubt ist und auch nicht funktioniert.

Wer weiß, wie ich das Skript dazu bewegen kann, Parameter (also den Dateinamen) zu verarbeiten?

Schönen Gruß
Raimar

  1. Hallo Raimar,

    Ich bin zwar alles andere als ein SSI-Experte, aber ich denke ueber <!--#include virtual="/news/news.htm"--> kann man die HTML-Datei doch auch direkt einbinden. Der Umweg ueber ein Skript waere somit doch Quatsch, oder nicht ?

    siehe auch : <../../tgbe.htm>

    Gruss,
    Kerki

  2. Hi,

    [...] <!--#exec cgi="skript.pl?datei"--> [...]

    kerki hat ohne es zu wissen recht ;-)

    Mit <!--#include virtual="script.pl?datei" --> kannst Du einem Script auch Parameter übergeben. Aber beachte bitte bei _allen_ SSI-Kommandos, daß vor dem "-->" ein Leerzeichen stehen muß!

    Cheatah

    1. Hallo Cheatah,

      Ich weiss nicht viel, aber rate manchmal ganz gut ;-) !

      Ich habe jetzt mal offline ein  bisschen rumprobiert (das mit den Parametern kann ich nur bestaetigen), habe dabei aber ein paar Problemchen gehabt. Vielleicht kannst Du Dir (oder besser noch: Mir) erklaeren, woran das liegt :

      Ich habe bei mir unter Win95 Xitami + Perl
      installiert, um Skripte offline zu testen und alles klappt soweit ganz hervorragend.

      Nun aber SSI :
      In der ersten Zeile von Perl-Skripten steht ja immer #!usr/bin/perl oder aehnliches. Wenn ich ein Skript direkt aufrufe, laeuft es auch bestens. Wenn ich aber dasselbe Skript per SSI aufrufe, laeuft es NICHT. Wenn ich die erste Zeile aber aendere, z.B. in #! perl, laeuft es dann wieder. Was habe ich da denn gemacht? Ich denke mal es liegt an der Konfiguration des Webservers ? Hast Du einen Tip fuer mich.

      Vielen Dank schon mal.

      Gruss,
      Kerki

      1. Hallo Kerki,
        hallo Cheatah,

        erstmal danke für den Tipp (kann ich erst heute abend zu Hause testen). Gibt es einen vernünftigen Grund, mich für die eine oder andere Methode zu entscheiden? Im Prinzip scheint mir im Endeffekt kein Unterschied zu bestehen.

        Ich weiss nicht viel, aber rate manchmal ganz gut ;-) !

        dann will ich mich mal am lustigen Raten beteiligen. :-)

        [...]

        Ich habe bei mir unter Win95 Xitami + Perl

        [...]

        In der ersten Zeile von Perl-Skripten steht ja immer #!usr/bin/perl oder aehnliches. Wenn ich ein Skript direkt aufrufe, laeuft es auch bestens. Wenn ich aber dasselbe Skript per SSI aufrufe, laeuft es NICHT. Wenn ich die erste Zeile aber aendere, z.B. in #! perl, laeuft es dann wieder. Was habe ich da denn gemacht? Ich denke mal es liegt an der Konfiguration des Webservers ?

        Ich würde sagen, dass dein Webserver falsch (oder nicht) konfiguriert ist. Irgendwo muss angegeben werden, wo Perl auf deiner lokalen Festplatte installiert ist. Bei meinem OmniHTTPD kann man das unter "Advanced" einstellen. Und zwar /PFAD/PROG (also z.B. C:\PROGRAMME\PERL\BIN\PERL).

        Raimar

        1. In der ersten Zeile von Perl-Skripten steht ja immer #!usr/bin/perl oder aehnliches. Wenn ich ...
          Ich würde sagen, dass dein Webserver falsch (oder nicht) konfiguriert ist. Irgendwo muss angegeben werden, wo Perl auf deiner lokalen Festplatte installiert ist.

          Nicht immer, nur manchmal.
          Siehe hierzu: http://www.teamone.de/selfaktuell/schroepl03.htm#a8.

          1. Hi,

            In der ersten Zeile von Perl-Skripten steht ja immer #!usr/bin/perl oder aehnliches. Wenn ich ...
            Ich würde sagen, dass dein Webserver falsch (oder nicht) konfiguriert ist. Irgendwo muss angegeben werden, wo Perl auf deiner lokalen Festplatte installiert ist.

            jepp. "perl" ist eben in der Umgebungsvariable %PATH% zu finden, deswegen klappt das; /usr/bin/perl hingegen findet er nicht.

            Siehe hierzu: http://www.teamone.de/selfaktuell/schroepl03.htm#a8.

            Ich schlage mich zufällig gerade mit Apache rum ;-) und hatte ebenfalls das Problem mit dem Perl-Interpreter. Da ich nicht hunderte von Scripts anpassen wollte, nur um sie bei jedem Upload erst mal manuell bearbeiten zu müssen, habe ich einfach mal probiert, Perl ins Verzeichnis c:/usr zu installieren - daraufhin liegt nämlich die perl.exe in c:/usr/bin. Tja, und bei Apache funktioniert das einwandfrei. Vielleicht ja auch bei Xitami?

            Anmerkung: Es ist anzunehmen, daß Perl auf der selben Festplatte liegen muß, wie der Server auch. Möglicherweise ist es aber auch von ServerRoot oder DocumentRoot abhängig, das kann ich hier mangels Festplatten bzw. Partitionen leider nicht testen.

            Naja. Als nächstes werde ich mich wohl dran machen, PHP3 für Apache einzurichten. Hat da jemand zufällig Erfahrung mit und kann mir ein paar Tips geben? Es scheint nicht ganz so einfach zu sein wie die Perl-Einrichtung (welche schon ein Weilchen gebraucht hat *g*)

            Cheatah