h-o: Lokaler Webserver mit SSI und Aufruf von PHP

hi,

meine älteren Homepages (lauter .htm-Dateien) laufen alle noch mit Server-Side-Includes.

Die .htm-Dateien werden in der .htaccess mit den üblichen Befehlen als SSI ausgeführt (siehe unten). Das funktioniert seit ziemlich genau 10 Jahren ohne Probleme sowohl auf dem echten Webserver meines Providers (Apache 2.2.10/Unix und PHP 5.2.10 als CGI-Version) als auch auf meinem lokalen Test-Webserver (Apache 2.2.15/Windows XP und PHP 5.3.3 als Modulversion).

Aus Spaß habe ich mal versucht, auf dem lokalen Server ebenfalls die CGI-Version von PHP zu laden statt wie bisher immer nur die Modulversion. Im Prinzip funktioniert alles genauso, mit einer wesentlichen Ausnahme: Im Gegensatz zum Webserver meines Providers werden bei meinem lokalen Server mit PHP als CGI beim SSI-Aufruf einer PHP-Datei mit "include virtual..." offenbar keine SSI-Umgebungsvariablen mehr übergeben.

Beispiel: In einer htm-Datei stehen mehrere Anweisungen zur Definition von SSI-Umgebungsvariablen, etwa

<!--#set var="dateiname" value="datei456.jpg" --> usw.

sowie der Aufruf der PHP-Datei, die weitere Steuerungen übernimmt, etwa

<!--#include virtual="123.php?$QUERY_STRING" -->

In der aufgerufenen PHP-Datei werden die Umgebungsvariablen dann ausgewertet, um etwa bestimmte Menüs aufzuklappen, Bilder anzuzeigen etc.

z. B. mit $_SERVER["dateiname"] oder $_ENV["dateiname"]

Bei der Modul-Variante werden auf dem lokalen Server die Umgebungsvariablen auch einwanfrei übergeben, bei der CGI-Variante dagegen (und eben nur auf dem lokalen Server, nicht bei meinem Provider mit PHP-CGI) bleiben die SSI-Umgebungsvariablen bei der Übergabe seltsamerweise leer, auch $_SERVER["DOCUMENT_NAME"] (hier war sonst immer automatisch der Name der aufrufenden .htm-Datei abgelegt).

Lediglich $_SERVER["QUERY_STRING"] ist innerhalb der PHP-Datei mit einem Wert belegt (vermutliich, weil er nicht über die SSI-Datei definiert wurde, sondern schon vorher beim Aufruf der SSI-Datei existierte).

In der httpd.conf stehen die üblichen Anweisungen für PHP:

Modul-Version:

PHPIniDir "G:/Serverdaten/PHP"

LoadModule php5_module F:/Server/PHP/php5apache2_2.dll

CGI-Version:

ScriptAlias /php/ "F:/Server/PHP/"
AddType application/x-httpd-php5 .php
Action application/x-httpd-php5 "/php/php-cgi.exe"
SetEnv PHPRC G:/Serverdaten/PHP

In der .htaccess steht:

#AddHandler server-parsed .htm
AddType text/html .htm
AddOutputFilter INCLUDES .htm
Options +ExecCGI +Includes

Die Addhandler-Anweisung (für Apache 1.x) war hier veraltet und erzeugt auf dem lokalen Webserver zusammen mit PHP als CGI und SSI-Aufrufen in Zusammenhang mit PHP meist nur Unsinn. Bei meinem echten Webserver funktioniert merkwürdigerweise allerdings auch alles mit der AddHandler-Anweisung (statt AddType und AddOutputFilter) einwandfrei - was ich ehrlich gesagt auch gar nicht verstehe...

Obige Befehle habe ich übrigens auch mal statt einer .htm- mit einer .shtml-Datei probiert, die ja standardmäßig unter SSI läuft, aber leider das gleiche ernüchternde Ergebnis auf dem lokalen Server mit PHP-CGI erzielt.

Vielleicht hat jemand eine Idee, warum das bei meinem lokalen Webserver mit PHP-CGI die "DOCUMENT_NAME" und andere SSI-Umgebungsvariablen nicht übergeben werden bzw. was (möglicherweise in der httpd.conf) zusätzlich eingestellt werden muss.

Auch an die php.ini hatte ich schon gedacht, also dass hier mein Provider zusätzliche Einstellungen macht, die mir meiner php.ini fehlen (ok, dafür müsste die Anfrage auf "PHP..." statt "SERVER..." lauten, wobei ja bei der Modul- und der CGI-Variante auf die gleichen php.ini's verwiesen wird.

Bin leider völlig ratlos, daher schon mal Danke im voraus für die hoffentlich zahlreichen Antworten :-)

ciao
h-o