Zum genauen Untersuchen von php-Fehlern kann man die Debug-Meldungen aktivieren:
Als wwwadmin:
Server -> Debugging -> Normal + Debug-Meldungen anzeigen
Für diesen Fehler gibt es mehrere Ursachen (nach google). Die Kurssicherung (.zip-Datei) enthielt bei mir in der .xml-Datei den Wert „NULL“ (genauer „$@NULL@$“) an einer nicht zulässigen Stelle. Beim Wiederherstellen des Kurses gabs dann eine Fehlermeldung, wenn der Wert „NULL“ in die Datenbank geschrieben werden sollte, die Wiederherstellung brach ab.
Erste Lösung: Die xml-Datei des Kurssicherungspaketes manuell editieren und alle NULL-Parameter durch einen Leerstring ersetzen.
Zweite Lösung: In der Datenbank (postgres) alle NULL-Parameter in der Tabelle mdl_reference
durch einen Leerstring ersetzen (bin am testen …).
Dritte Lösung: Das Script abändern, das die Kurssicherung erstellt: /moodle/mod/resource/backuplib.php
.
Diese Änderung geht natürlich beim nächsten moodle-update verloren!!
.... //Print assignment data fwrite ($bf,full_tag("ID",4,false,$resource->id)); fwrite ($bf,full_tag("MODTYPE",4,false,"resource")); fwrite ($bf,full_tag("NAME",4,false,$resource->name)); fwrite ($bf,full_tag("TYPE",4,false,$resource->type)); // ----------------------------------------------------------------- if ($resource->type == 'html') { if ($resource->reference == null) { $resource->reference = ''; } } // ----------------------------------------------------------------- fwrite ($bf,full_tag("REFERENCE",4,false,$resource->reference)); fwrite ($bf,full_tag("SUMMARY",4,false,$resource->summary));
Die eingefügte Abfrage bewirkt dass kein „null“-Parameter sondern ein Leerstring geschrieben wird, falls der Resourcen-Typ html (Textseite mit Editor) ist.
Beim Import eines Kurses werden die hard-kodierten Dateiverweise mit der alten Kursnummer nicht auf die neue Kursnummer umgesetzt. Dies kann man entweder aufwändig einzeln nach dem Import anpassen.
Oder man kann nun diese falschen Dateiverweise in der Datenbank ersetzen lassen. Dazu als wwwadmin
anmelden und folgende URL aufrufen (ggf. URL dem eigenen Server anpassen):
http://server/moodle/admin/replace.php
Nun alle Verweise ersetzen von z.B. der alten Kursnummer 44 auf die neue Kursnummer 22:
Search whole database for: /moodle/file.php/44/ Replace with this string: /moodle/file.php/22/
Wichtig: Falls es in dem neuen Moodle schon einen Kurs mit Nummer 44 gab, wird dieser leider auch verändert und damit unbrauchbar. Dies sollte vorher unbedingt abgeklärt werden!! Ggf. muss man dann voher die XML-Datei bearbeiten (siehe oben).