Problem mit SSI/ SHTML-Dateien

Problem mit SSI/ SHTML-Dateien

von Oliver Grimm -
Anzahl Antworten: 3
Ich würde gerne ganze Lerneinheiten eines Online-Studienmoduls, bestehend aus vielen Webseiten, Grafiken,etc., im Moodle Dateiverzeichnis ablegen. Dazu habe ich den kompletten Ordner einer Lerneinheit gezippt, hochgeladen und entpackt. Soweit kein Problem. Als ich dann die Lerneinheit über die entsprechende (SHTML-) Startdatei aufrufen wollte ging ein „Datei speichern unter ...“ Dialogfenster des Browsers auf.

Dieses Problem tritt immer dann auf, wenn statt auf eine HTML auf eine SHTML Datei verwiesen wird. Einzelne Teile der Lerneinheiten-Seiten, bspw. die Navigationsleiste, werden über server side includes eingebunden.

Der Apache http Server ist so konfiguriert, dass er SHTML-Dateien verarbeiten und darstellen kann. Nur wenn ich über Moodle, konkret über die Moodle Dateiablage, eine SHTML-Seite aufrufe bekomme ich den oben genannten „Speichern unter ...“ Dialog.

Noch habe ich das Problem nicht so recht verstanden. Ich vermute es liegt an den Einstellungen des PHP Moduls... Gibt es eine Lösung für das Problem? Muss ich an der php.ini etwas ändern?

Vielen Dank für Hinweise.
Mittelwert:  -
Als Antwort auf Oliver Grimm

Re: Problem mit SSI/ SHTML-Dateien

von Ralf Meier -
Hi Oliver!

Hast du in der httpd.conf Datei folgende Zeilen auskommentiert?

#
# To use server-parsed HTML files
#
AddType text/html s.html
AddHandler server-parsed .shtml

Gruss Ralf
Als Antwort auf Ralf Meier

Re: Problem mit SSI/ SHTML-Dateien

von Oliver Grimm -
Hallo Ralf,

ja, die httpf.conf ist (meiner Meinung nach) korrekt.
Server Side Includes werden sonst auch korrekt verarbeitet. Nur eben nicht über die Moodle Dateiablage.

Da der Link ungefähr so aussieht: http://mein.moodle.de/file.php/7/lerneinheit/index.shtml vermute ich, dass der Fehler, bzw. das Problem entweder an den Einstellungen des Apache-Php-Moduls oder aber in der Moodle Datei file.php liegt.

Werde versuchen mich da mal reinzuwühlen. Aber vielleicht hat jemand noch Ideen und Tipps... ?

olly
Als Antwort auf Oliver Grimm

Re: Problem mit SSI/ SHTML-Dateien

von Oliver Grimm -
Jeder Zugriff auf eine Datei aus der Moodle-Dateieablage erfolgt über moodle_root/file.php

Dieses PHP-Skript liest den Inhalt der gewählten Datei ein, erzeugt einen HTTP-Header und schickt das Ganze an der Browser. Wenn die Datei dem MIME-Type "text/html" oder "text/plain" entspricht, wird der Inhalt (Text) noch durch die Moodle-Filter (Smilies setzen, etc.) gejagt, bevor er an den Browser geschickt wird.

Meine derzeitige Lösung sieht folgendermaßen aus:

-- Änderung in moodle_root/files/mimetypes.php --
Den MIME-Type SHTML bekannt machen indem dem array $mimeinfo folgender Eintrag zugewiesen wird:
"shtml" => array ("type"=>"text/shtml", "icon"=>"html.gif")

-- Änderung in moodle_root/file.php --
Eine weitere If-Abfrage für den MIME-Type SHTML eingefügen:
else if ($mimetype == "text/shtml") {
$output = implode('', file($pathname));
header("Content-length: ".strlen($output));
header("Content-Type: text/html; charset=ISO-8859-1");
echo $output;
}

Mit Seiten, die nur die SSI-Anweisung --#include virtual="./xxxxx.inc"-- beinhalten funktioniert das bisher problemlos. Scheinbar werden aber nicht alle SSI-Befehle ausgeführt, so wird z.B. --#config timefmt="%A"-- --#echo var="DATE_LOCAL" -- nicht interpretiert sondern als plain text übertragen ..

Gruß
olly