Leider hat man immer wieder beratungsresistente Kunden. Meine Empfehlungen zum Update von einer potentiell unsicheren alten Contao 2.11 Installation auf eine sichere LTS-Version stoßen bei manchen Kunden auf taube Ohren. Da der Feature-Wunsch "responsive Design" aufkam, stand jetzt (endlich) der große Sprung von 2.11 auf 3.5 an. Da ausgerechnet zum Wochenende der FTP-Server beim Provider gestört war (der Upload brach ständig ab und war langsam), kam ein schrittweises Update nicht in Frage.
Da mich das Update heute sehr viel Zeit für Recherche und Experimente gekostet hat, hier eine Zusammenfassung des Vorgehens als Schritt-für-Schritt Liste.
Mit folgenden Fallstricken müsst ihr rechnen:
- Die Dateiendung für Templates hat sich unter Umständen geändert.
- User-Dateien liegen jetzt nicht mehr in /tl_files, sondern in /files.
[Man kann eine Contao-Installation zwar prinzipiell mit einem beliebigen Upload-Ordner betreiben und könnte somit auch bei /tl_files bleiben. Da die Ordner-Umbenennung den neuen Standard darstellt, scheint es mir sinnvoll aus Kompatibilitätsgründen auch beim Update diesen Schritt mitzugehen.]- Contao verwendet jetzt eine datenbank-basierte Dateiverwaltung.
- Das Layout wurde auf Holy-Grail umgestellt.
- Manche Erweiterungen laufen nicht mehr unter 3.5! Vorher unbedingt recherchieren!
Generell würde ich euch empfehlen, wenn ihr nicht unbedingt bestimmte neue Features braucht, immer bei den LTS-Versionen (Long Time Support) zu bleiben. Der Release Plan wurde jetzt für die LTS-Versionen auf ein 2/4-Modell umgestellt (alle 2 Jahre eine neue LTS Version mit jeweils 4 Jahren Sicherheits-Support) - eine absolut super-coole Entscheidung für Kunden und Entwickler!!!! Damit habt ihr Planungssicherheit und der ständige Update-Stress kann vermieden werden.
Quellen:
Neben den Anleitungen von Nina habe ich die gute Zusammenfassung von blu.plane für den Umstieg auf 3.2 als Basis genommen und ergänzt. Dazu noch das Posting von Leo zum Umstieg der Contao-Seite von 2.11 auf 3.0 und die Update Hinweise in der Release-Ankündigung.
Schritt-für-Schritt Update von Contao 2.11 auf Contao 3.5.x
- In der alten 2.11 Installation alle Erweiterungen aktualisieren.
- Über die Systemwartung die ganzen Cache-Dateien löschen.
- Jetzt das Backup der alten 2.11 Installation machen.
- Ganz wichtig: da beim Umstieg einiges schief gehen kann, unbedingt ein Backup der Datenbank machen!
- Um ganz sicher zu gehen, sollte man das Update mit einer neuen Datenbank machen. Will oder kann man keine neue Datenbank erstellen, dann muss man 100% sicher sein, dass das Rückspielen des Backups auf jeden Fall klappt!
Wenn ihr euch nicht genau an die Reihenfolge haltet und kein Backup habt, lauft ihr sonst Gefahr, dass nachher alle Dateiverlinkungen (Bilder etc) weg sind! Ihr seid gewarnt!
[Ich musste heute vier Mal das Backup einspielen, bis ich den richtigen Ablauf gefunden hatte...]- Ihr ladet die aktuelle Contao-Version hoch. Wie gesagt, ich empfehle euch immer die LTS-Version zu nehmen.
Da beim Umstieg von 2.11.x auf 3.x.x viele Dateien weggefallen sind, sollte man die neue Version in einen leeren Ordner installieren, sonst hat man eine Menge Datei-Leichen die bei manchen Nutzern Probleme gemacht haben.- Ihr legt euch bei eurem Provider eine Subdomain für den neuen Ordner an.
- Da sich die .htaccess Datei sehr stark geändert hat, solltet ihr die Datei .htaccess.default wie von Nina empfohlen in .htaccess umbenennen und eventuelle spezielle Anpassungen in die neue Version übertragen.
- Folgende Dateien ladet ihr aus dem Backup in die neue Installation hoch:
- Den kompletten Ordner /tl_files
- Alles aus dem Ordner "templates", ggfls. Dateiendungen anpassen (.tpl > .html5)
- Aus dem Ordner "system/config": dcaconfig.php, langconfig.php, localconfig.php
- Aus dem Ordner "system/modules" alle Erweiterungen
- Wer auf den /files Ordner umsteigen will: Da es in einem Github Ticket Probleme beim Update gab, als sowohl der Ordner /files, als auch /tl_files vorhanden waren, habe ich den ganzen Inhalt von /files in /tl_files kopiert und den Ordner /files sicherheitshalber erstmal gelöscht (bzw. umbenannt).
- Wenn man eine neue Datenbank erstellt hat, sollte man die Daten jetzt in /system/config/localconfig.php eintragen oder die Korrektur über das Install-Tool machen.
- Jetzt startet man das Install-Tool und macht das Datenbank-Upgrade in vielen Schritten erst auf v3.0, dann auf 3.1 bis 3.5.
- Ganz am Schluss des DB-Upgrades kommen die Lösch-Änderungen an der alten Datenbankstruktur: hier genau darauf achten, dass DROP TABLE Befehle die Erweiterungen betreffen noch nicht ausgeführt werden.
- Wenn ihr den Pfad für Uploaddateien auf /files ändern wollt, solltet ihr jetzt in /system/config/localconfig.php den Eintrag für $GLOBALS['TL_CONFIG']['uploadPath'] anpassen: statt "tl_files" sollte jetzt "files" eingetragen werden.
- Ihr macht euch die Fehlsuche einfacher, wenn ihr in der config $GLOBALS['TL_CONFIG']['displayErrors'] = true setzt. Falls es Fehler gibt, bekommt ihr die Fehlermeldung gleich angezeigt.
- Wichtig: jetzt /tl_files in /files umbennen
- Danach ladet ihr euch die modifiziert Version von Leos modifizierter Version des Update Skripts herunter und legt die Datei in /contao. Mit dem Aufruf von MEINEDOMAIN.TLD/contao/contao-db-update.php startet ihr das Skript.
Wichtig: Wenn ihr die Reihenfolge nicht einhaltet, fehlen nachher alle Dateireferenzen, z.B. habt ihr dann keine Bilder mehr in News oder Artikeln!- Jetzt könnt ihr euch ins Backend einloggen. In der Dateiverwaltung nehmt ihr zur Sicherheit nochmals eine Synchronisierung vor. Falls ihr euch nicht einloggen könnt, bitte hier weiter lesen.
- Danach prüft ihr, ob eure Erweiterungen nochmals aktualisiert werden müssen (z.B. wenn es neue Versionen extra für 3.5 gibt).
- Wahrscheinlich müsst ihr im Seitenstartpunkt erst einmal ein Layout zuweisen.
- Jetzt kommt der umfassende Check:
- Jetzt prüft ihr erst einmal das Frontend: passt das Layout noch? Beim Umstieg von 2.11 kann es wüste Effekte geben, da viele margin / padding Kombinationen mit dem Holy Grail Ansatz überarbeitet werden müssen. Bei der CSS-Anpassung kann noch erheblich Arbeit auf euch zu kommen! Bei mir hat es bei einer Seite das Layout völlig zerlegt, was sich allerdings mit angepassten paddings regeln ließ.
Es lohnt sich auf jeden Fall den Thread für das 3.0 Update durchzusehen. Nina hat in diesem Post einige Threads zu Holy Grail zusammen gefasst.- Jetzt schaut euch alle Bereich an, bei denen ihr die Templates angepasst habt. Funktioniert noch alles? Es lohnt sich zu prüfen, ob das entsprechende Basis-Template inzwischen angepasst wurde und gegebenenfalls die Änderungen zu übertragen.
- Funktionieren noch alle Erweiterungen?
- Wenn alles stimmt, könnt ihr eventuell noch ausstehende DROP TABLE Befehle über das Install-Tool ausführen.
- Jetzt konfiguriert ihr euren Webspace, dass eure Domain auf den neuen Ordnern zeigt.
- Und nicht vergessen: in den Systemeinstellungen unter "Sicherheit" die Fehlermeldungen wieder abschalten!
- Zum Schluss: wenn ihr die Google Suchkonsole (ex Google Webmaster Tools) nutzt, solltet ihr den Pfad der XML-Sitemap Dateien prüfen. In meiner 2.11 Installation lagen die Daten im Root-Verzeichnis. Mit 3.5 liegen sie jetzt unter /share. ?Die Änderung müsst ihr direkt in der Suchkonsole machen.
Mögliche Fehler/Probleme:
- Wenn ihr euch nicht mehr in das Install-Tool einloggen könnt: in der localconfig einfach 'installPassword' auf leer setzen.
- Kein Backen Login mit bekanntem Passwort: Ab Contao 3.5.36 wird eine neue Verschlüsselungsmethode genutzt. Das bedeutet, das eure gespeicherten Hashes ungültig sind. Alle Passwörter müssen neu vergeben werden. Wie ihr wieder ins Backend kommt, lest ihr hier.
- Wenn ihr beim Aufruf des Install-Tools eine Fehlermeldung bekommt:
solltet ihr den Datenbanktreiber in der localconfig auf "MySQLi" ändern:Fatal error: Uncaught exception Error with message Call to undefined function Contao\Database\mysql_connect() thrown in system/modules/core/library/Contao/Database/Mysql.php on line 47PHP-Code:
$GLOBALS['TL_CONFIG']['dbDriver'] = 'MySQLi';
Wenn ihr noch Ergänzungen oder Korrekturen habt, würde ich diese hier im Eingangspost nachtragen. Da ich demnächst wegen einer Kreuzband-OP ausgeknockt bin, kann es aber etwas dauern ;-)