Rainer: SSI kombiniert mit PHP

Hallo,
bisher verwenden alle meine Seiten SSI-Includes, zum Teil
mit Inlude einer Datei std.shtml, die ihrerseits wieder mehrere includes (x1.shtml, x2.shtml, ... Rahmenteile) enthält.
Jetzt benötige ich aber einige PHP-Seiten mit den vorhandenen Strukturen.
In der PHP-Datei könnte ich ja xyz.shtml mit php-Include hereinholen,
die darin enthaltenen SSI-Includes würden aber dann nicht aufgelöst.
Wie kann ich dies am besten lösen?
Das Naheliegendste wäre wahrscheinlich, alle Dateien in PHP-Dateien zu ändern.
Das möchte ich aber möglichst vermeiden.
Grüße
Rainer

  1. Lieber Rainer,

    Das Naheliegendste wäre wahrscheinlich, alle Dateien in PHP-Dateien zu ändern.

    warum wäre das das Naheliegendste?

    Das möchte ich aber möglichst vermeiden.

    Warum willst Du das vermeiden?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Lieber Rainer,

      Das Naheliegendste wäre wahrscheinlich, alle Dateien in PHP-Dateien zu ändern.

      warum wäre das das Naheliegendste?

      Warum nicht? Naheliegend, da dann alle includes mit PHP gemacht würden.

      Das möchte ich aber möglichst vermeiden.

      Warum willst Du das vermeiden?

      Weil ich wegen wenigen neuen Dateien sehr viele alte ändern müsste und dann alle im Internet vorhandenen links fehlerhaft wären und (z.B.) über .htaccess umgeleitet werden müssten.
      Grüße
      Rainer

      1. Lieber Rainer,

        Das Naheliegendste wäre wahrscheinlich, alle Dateien in PHP-Dateien zu ändern.

        warum wäre das das Naheliegendste?
        Warum nicht? Naheliegend, da dann alle includes mit PHP gemacht würden.

        Das bedeutet anstatt des HTML-Kommentars mit SSI-Anweisung notierst Du in allen PHP-Dateien entsprechende PHP-Anweisungen? Das ist tatsächlich einiges an Handarbeit.

        Warum willst Du das vermeiden?
        Weil ich wegen wenigen neuen Dateien sehr viele alte ändern müsste

        Mit cleveren Ersetzungsfunktionen im Editor Deines Vertrauens sollte das relativ schmerzfrei gelingen. Auch über mehrere Dateien hinweg.

        und dann alle im Internet vorhandenen links fehlerhaft wären und (z.B.) über .htaccess umgeleitet werden müssten.

        Du meinst, weil die Dateiendungen nicht mehr auf ".html" lauten, sondern auf ".php"? Das geht auch mit dem Ändern des MIME-Typs in der Apache-Konfiguration (falls Dein Hoster Dich das machen lässt), indem für HTML-Dateien auch das Parsen von PHP eingestellt wird. Empfehlenswert ist das zwar nicht, aber es würde das mod_rewriten umgehen... es sei denn Du greifst tiefer in die Trickkiste und schreibst Dir eine zentrale PHP-Datei, die über .htaccess aufgerufen wird und sich anhand der Pfade die jeweiligen Dateien holt, zusammenbaut, und dann an den Browser ausgibt.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Moin!

    Hallo,
    bisher verwenden alle meine Seiten SSI-Includes, zum Teil
    mit Inlude einer Datei std.shtml, die ihrerseits wieder mehrere includes (x1.shtml, x2.shtml, ... Rahmenteile) enthält.
    Jetzt benötige ich aber einige PHP-Seiten mit den vorhandenen Strukturen.
    In der PHP-Datei könnte ich ja xyz.shtml mit php-Include hereinholen,
    die darin enthaltenen SSI-Includes würden aber dann nicht aufgelöst.

    Du kannst mit SSI das PHP dort einbinden, wo du es brauchst.

    - Sven Rautenberg

    1. Hi,

      Du kannst mit SSI das PHP dort einbinden, wo du es brauchst.

      Habe ich dann nicht das an anderer Stelle angesprochene Problem, dass die shtml-Dateien auf php umbenannt werden müssen?
      Gruß
      Rainer

      1. Moin!

        Hi,

        Du kannst mit SSI das PHP dort einbinden, wo du es brauchst.

        Habe ich dann nicht das an anderer Stelle angesprochene Problem, dass die shtml-Dateien auf php umbenannt werden müssen?

        Nö, wieso? Dein SSI includet PHP oder SSI oder sonstwas - davon sieht der User doch nix.

        - Sven Rautenberg

        1. Hi,

          Habe ich dann nicht das an anderer Stelle angesprochene Problem, dass die shtml-Dateien auf php umbenannt werden müssen?

          Nö, wieso? Dein SSI includet PHP oder SSI oder sonstwas - davon sieht der User doch nix.

          Wenn ich in eine Datei mit Endung shtml PHP include, so wird doch das PHP nicht interpretiert.
          Gruß
          Rainer

          1. Lieber Rainer,

            Wenn ich in eine Datei mit Endung shtml PHP include, so wird doch das PHP nicht interpretiert.

            hast Du ausprobiert was passiert, wenn Du eine PHP-Datei in eine shtml-Datei includierst?

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Hallo Felix,

              hast Du ausprobiert was passiert, wenn Du eine PHP-Datei in eine shtml-Datei includierst?

              Es kommen Fehlermeldungen in einem eingefügten php-Script der Art
              "Funktion xy undefined", wobei die Funktion xy in einem anderen eingefügten php-Script definiert ist.
              In dem ausgegebenen HTML-Code kann man ja logischerweise die eingefügten PHP-Sources nicht sehen.
              Gibt es eine Möglichkeit das Gesamtcoding auf dem Server anzusehen oder das php dort zu debuggen?
              Gruß
              Rainer

              1. Lieber Rainer,

                Es kommen Fehlermeldungen in einem eingefügten php-Script der Art
                "Funktion xy undefined", wobei die Funktion xy in einem anderen eingefügten php-Script definiert ist.

                Problem erkannt! Nun darfst Du es lösen. Du könntest z.B. alle Funktionen in einem PHP-Script definieren, welches Du zuallererst inkludieren lässt. Alle anderen PHP-Scripte "kennen" dann die jeweils benötigten Funktionen und der Fehler ist behoben.

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
                1. @@Felix Riesterer:

                  nuqneH

                  Problem erkannt! Nun darfst Du es lösen. Du könntest z.B. alle Funktionen in einem PHP-Script definieren, welches Du zuallererst inkludieren lässt.

                  Dafür bietet sich require-once() an.

                  Qapla'

                  --
                  Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                  (Mark Twain)