Thomas Luethi: PHP & SSI

Beitrag lesen

Hallo nochmal,

Ich hab's noch rasch getestet, und zwar auf
zwei verschiedenen Servern.

Beispiel 1:
index.php bindet per PHP-Befehl include() oder virtual()
das erste Include kopfzeile.shtml ein.
Dieses seinerseits bindet per SSI-Befehl ein oder mehrere
weitere Dateien ein, z.B. statische HTML-Dateien logo.html
und navigation.html

Gleiches Ergebnis auf beiden Servern:

include("kopfzeile.shtml")
=> Datei wird unveraendert eingebunden, d.h. SSI-Befehle
   werden _nicht_ ausgefuehrt.

virtual("kopfzeile.shtml")
=> Datei wird geparst eingebunden, d.h. SSI-Befehle
   _werden_ ausgefuehrt, inklusive Einbetten von
   weiteren Dateien.

Beispiel 2:
index.shtml bindet per SSI-Befehl das erste Include
kopfzeile.php ein.
Dieses seinerseits bindet per PHP-Befehl weitere Dateien
ein, z.B. statische HTML-Dateien.

Resultat unabhaengig von der Schreibweise:
<!--#include virtual="kopfzeile.php" -->
oder
<!--#include file="kopfzeile.php" -->

Server bei kommerziellem Webhoster (beide Schreibweisen):
Datei wird geparst eingebunden, d.h. PHP-Befehle werden
ausgefuehrt, inklusive Einbetten von weiteren Dateien.

Uni-Server (bei beiden Schreibweisen): Fehlermeldung:
[an error occurred while processing this directive]

---

Wie gesagt, das "Mixen" der Technologien PHP und SSI,
indem man verschachtelte Includes verwendet, ist
nicht unbedingt zu empfehlen, weil es je nach
Server-Konfiguration nicht funktionieren kann.

Der Weg, als "aeusserste" Datei eine PHP-Datei zu haben,
und damit Seiten einzubinden, die SSI verwenden,
scheint etwas zuverlaessiger zu sein, als der
umgekehrte Weg (SSI-Datei bindet PHP-Dateien ein).

Mit PHP kann man notfalls auch die eigenen Ressourcen
ueber HTTP abholen und einbinden, was mit SSI
nicht moeglich ist.

http://httpd.apache.org/docs-2.0/mod/mod_include.html#includevirtual
  "The URL cannot contain a scheme or hostname,
  only a path and an optional query string."

mfg, Thomas