Contao-Update von Version 3.5 auf 4.4

von Oliver Richter (Kommentare: 3)

Da für die letzte Long-Time-Support-Version (LTS) von Contao 3.5 im Mai 2019 die letzten Sicherheitspatches bereit gestellt werden (siehe Contao-Release-Plan), ist ein Update von noch vorhandenen alten 3.5-er Versionen zwingend erforderlich.
Hier möchte ich daher einen möglichen Weg für ein solches Update von Contao-3.5 auf die aktuelle LTS-Version Contao-4.4 mit Hilfe des Contao-Managers aufzeigen. 

1. Voraussetzungen

  • Eine Installation von Contao 3.5 mit oder ohne Erweiterungen. Ich würde zudem immer dazu raten, auf die aktuellste bzw. letztmögliche Version von Contao 3.5 und der Erweiterungen zu updaten und nicht benötigte Erweiterungen vorab zu deinstallieren. Um zu prüfen, ob es die bisher verwendeten Erweiterungen auch für Contao 4.4 gibt, kann man die Paketlistensuche unter https://packagist.org/ verwenden.
  • Erfüllen der Systemvoraussetzungen zur Installation von Contao 4.4. Zum Live-Test auf Ihrem Server lässt sich der Contao-Check nutzen.
  • Zugang zu Ihrem Webhoser-Backend inkl. einem Datenbanktool wie phpMyAdmin und einem SFTP-Client- oder Shell-Zugang.
  • Anlegen eines Backups der bisherigen Contao-Installation: Datenbank in Form einer (möglichst komprimierten) SQL-Datei & komplettes Dateisystem ihrer bisherigen Contao-Installation). 

2. Contao-4.4-Testumgebung anlegen

  • Erstellen Sie eine Testumgebung für Contao 4.4. Das heißt, zuerst eine neue, leere Datenbank anlegen, sowie einen Ordner auf dem Webspace, der sich außerhalb der bisherigen Contao-Installation befindet. Darin wird ein Unterordner /web erstellt, auf den eine neu anzulegende Subdomain z.B. new.domain.de direkt zeigt/verweist. 
  • Als nächstes gilt es, den Contao-Manager von https://contao.org/de/download.html herunter zu laden und damit Contao 4.4. installieren zu können. 
  • Legen Sie die soeben herunter geladene Datei contao-manager.phar mit einem SFTP-Programm oder SSH-Client auf Ihrem Webserver im Ordner /web ab. Anschließend benennen Sie diese Datei auf dem Server so um, dass Sie einfach die Endung .php anhängen. Die Datei heißt also dann contao-manager.phar.php.
    (Nur für den Fall, dass Sie die Datei schon auf vor dem Hochladen umbenennen, wählen Sie zur Übertragung auf den Server in Ihrem SFTP-Client bitte den Binärmodus).
  • Die abgelegte Datei nun direkt aufrufen über die oben erstellte Subdomain, z.B. https://new.domain.de/contao-manager.phar.php und den Anweisungen zur Installation von einer aktuellen und vollständigen Version von Contao 4.4 folgen. 
  • Am Ende der Installation wird zum Aktualisieren der Datenbank mit dem Contao-Install-Tool aufgefordert. Bevor Sie nun fortfahren:
    • Importieren Sie vorher mit z.B. phpMyAdmin die Tabellen ihrer Contao-3.5-Datenbank vollständig in die neu erstellte und noch leere Datenbank für Contao 4.4. Nutzen Sie dafür ein Datenbank-Tool wie adminer oder phpMyAdmin.
    • Kopieren Sie vorher mit einen SFTP-Programm oder SSH-Client die Inhalte der Ordner /files und /templates  aus Ihrer alten Installation in die neue Testumgebung, direkt ins Wurzelverzeichnis (dort befinden sich bereits die Ordner files und templates).
    Aktualisieren Sie anschließend die neue Datenbank mit dem Contao-Install-Tool. Führen Sie dabei alle Updates durch, nur sollten Sie vorerst keine Spalten oder Tabellen löschen (drop), insbesondere von bisher verwendeten Erweiterungen.
  • Prüfen Sie nun das Frontend (Webseite) und Backend (Contao). Bei Fehlern oder wenn sich z.B. die Webseite nicht anzeigen lässt, werfen Sie zur Auswertung einen Blick in die Log-Datei(en) unter /var/logs/.  Hier steht normalerweise dann mehr oder weniger genau, warum das Frontend nicht angezeigt werden kann. Meldungen wie request.CRITICAL: Uncaught PHP Exception Exception: "Could not find template "j_slider" machen z.B. deutlich, dass man im neuen Contao-Backend unter Themes im jeweils verwendeten Seitenlayout noch das JavaScript-Template
    Im besten Fall können Sie nun schon Ihre Webseite sehen, wahrscheinlich sind aber noch nicht alle Ressourcen verfügbar und es ist noch etwas Feinjustierung notwendig.

3. Testumgebung anpassen

  • Erscheint die Meldung, kein Startpunkt gefunden oder ähnliches, müssen zur fehlerfreien Anzeige der Webseite im Backend unter Layout - Seitenstruktur - Startpunkt der Webseite im Bereich Domainname der Eintrag entfernt oder aber auf Ihre oben angelegte Subdomain oder weitere Parameter dort eingestellt werden.
  • Beim oder vor dem ersten Aufruf der Webseite rate ich zudem dazu im Backend unter System - Systemwartung die Daten bzw. den Cache zu leeren.
  • In Contao 4.4 gibt es einige Änderungen, auch kleinere am Markup der Modul-Templates. So ist zum Beispiel das Navigationstemplate leicht angepasst, die Formulartemplates etc. Es ist daher eventuell nötig, die bisherigen Stylesheets (CSS) etwas an die neue Umgebung anzupassen.
    Wenn Sie in der alten Installation viele individuell angepasste Templates verwendet haben, kann es nötig sein, diese jetzt manuell anzupassen und mit den aktuellen Templates von Contao 4.4 abzugleichen.
    Übrigens: Das Captcha-Formularelement ist bei Contao 4.4 nicht immer sichtbar. Dies ist so gewollt und entspricht der Funktion des Honeypot-Spamschutzes, siehe https://contao.org/de/news/contao_4-4-0.html.
  • Bedenken Sie, dass eventuell noch Anweisungen von der bisheren .htaccess-Datei in die neue im Ordner /web übernommen werden (z.B. Weiterleitungen) müssen?
  • Bei mir waren beim Update hin und wieder einige globale Einstellungen aus System - Einstellungen nicht übernommen wurden aus der alten Version (Datumsformat, Komprimierung des Markups und der Scripte, etc). Diese habe ich manuell nachgetragen in der neuen Version unter System - Einstellungen. Hierfür rate ich grundsätzlich dazu, die Einstellungen aus der Datei /system/config/localconfig.php (aus der alten Installation) manuell in die neue nach /system/config/localconfig.php zu übernehmen.
    Übrigens: Sofern man SMTP aktiviert hatte, muss man auch hier die Konfiguration in /app/config/parameters.yml manuell eintragen, da es in Einstellungen im Contao-Backend leider nicht mehr konfiguriert werden kann. So in etwa sollte dies dann aussehen, wahrscheinlich sind schon Einträge in der Datei parameters.yml vorhanden und Sie sollten die folgenden einfach anfügen:
parameters:
    mailer_transport: smtp
    mailer_host: email.server.de
    mailer_user: username
    mailer_password: password
    mailer_port: 25
    mailer_encryption: yourpassword

4. Erweiterungen einbinden

Ab hier sollte die aktualisierte Webseite nun funktionieren. Sofern Sie Erweiterungen verwendet haben in der alten Version, geht es nun darum, diese in möglichst aktualisierter Form auch weiterhin zu nutzen.

  • Rufen Sie den Contao-Manager auf via http://new.domain.de/contao-manager.phar.php und suchen und installieren Sie die Erweiterungen, die Sie auch schon in der alten Version installiert waren. Beim anschließendem Aktualisieren der Datenbank über das Install-Tool gehen Sie abermals behutsam vor und aktualisieren Sie nur die zur soeben installierten Erweiterungen gehörigen Tabellen und vermeiden Sie ein allgemeines Löschen (drop) der Tabellen der anderen bisher verwendeten Erweiterungen.
    Sofern Sie eine aktuelle Erweiterung für Contao 4.4 ihrer bisher unter Contao 3.5 genutzten Erweiterungen gefunden haben, sollte so die Übernahme der alten Daten problemlos funktionieren.
  • Installieren Sie stets nur eine Erweiterung in einem Schritt bzw das erleichtert das Finden eines Fehlers.
  • Sollte es keine aktuelle Version der bisher genutzten Erweiterung für Contao 4.4 geben, kopieren Sie den Modulordner der jeweiligen Erweiterung von der alten Installation aus /system/modules/ nach /web/system/modules/ der neuen Installation. Rufen Sie die den Contao-Manager auf und leeren Sie den Cache. Rufen Sie anschließend das Install-Tool auf aktualisieren Sie die Datenbank. Lassen Sie auch hier wieder nur die zur Erweiterung gehören Tabellen anpassen, wenn Sie darauf hingewiesen werden.

Ich freue mich über Anmerkungen, Korrekturhinweise, Kommentare.
Zudem danke ich mich ausdrücklich für die bisher schon eingegangenen Korrekturhinweise!

Zurück

Einen Kommentar schreiben

Kommentar von Jo |

Danke für die Anleitung.
Unter Absatz 2 sollte aber /files und /templates nicht direkt in /web kopiert werden, sondern in den darunterliegenden Ordner. In /web sind eigentlich nur die symlinks, wenn ich es richtig verstanden habe.
Gruß, Jo

Antwort von Oliver Richter

Vielen Dank für die Rückmeldung. Das ist korrekt bzw. war ein Schreibfehler. Ich werde das im Text entsprechend korrigieren. Beste Grüße, O.

Kommentar von Raff |

Hallo Herr Richter,

erst mal vielen Dank für die gut beschriebene Anleitung. Momentan bin ich dran eine Contao Installation 3.5.40 auf Version 4.4.41 anzuheben.
Mit Ihrer Anleitung hat so weit fasst alles problemlos funktioniert. Alle Erweiterungen sowie sämtliche Templates und Files werden gefunden und funktionieren einwandfrei.
Allerdings habe ich zwei Probleme mit einigen Unterseiten und hoffe Sie haben evtl. einen Lösungsansatz.
a) einige Seiten werden 3-6 mal weitergeleitet (301) bis sie schließlich nicht auf dem Server gefunden werden (404).
Bsp: Aus "mitglieder/schulen.html" wird "mitglieder/schulen/schulen/schulen/schulen.html"
b) einige Seiten werden direkt nicht gefunden und liefern einen 404 zurück obwohl sie in der Seitenstruktur angelegt sind.
Sehe leider in beiden Fällen keine Regelmässigkeiten - lediglich dass dieses Phänomen bei Unterseiten ab Navigations-Level 2 auftreten.

Bin für jede Hilfe dankbar.

Beste Grüße
Raff

Kommentar von Thomas Bantel |

Die Anleitung enthält viele gute Informationen. Einiges sollte man so aber nicht machen.

Zu Punkt 2:
- Wenn man die contao-manager.phar lokal in contao-manager.phar.php umbenennt, sollte bei der Übertragung per FTP explizit der Binärmodus gewählt werden, sonst kann die Datei bei der Übertragung möglicherweise verändert werden und nicht mehr funktionieren.
- Die Ordner /files und /templates aus der alten Installation NICHT in den Ordner /web kopieren, sondern eine Ebene höher in das Contao Installationsverzeichnis. Nur dort sind sie vor direktem Zugriff per Browser geschützt und dort werden sie auch von Contao erwartet. Insbesondere /files sollte man auch kopieren BEVOR man das Installtool aufruft, sonst gehen jegliche Zuordnungen von Dateien, z.B. Bilder, in Inhaltselementen verloren.

Zu Punkt 3:
- Die Ordner und Dateien in /web sind eben NICHT geschützt, sondern im Gegenteil alle öffentlich zugänglich. Genau dazu dient ja der Ordner /web.
- Globale Einstellungen kann man zumindest teilweise übernehmen, indem man die /system/config/localconfig.php aus der alten Installation in die neue Installation kopiert. Aber auch hier nach /system/config und nicht nach /web/system/config !

Antwort von Oliver Richter

Hallo

Ich habe mir das angeschaut und einige Passagen umstrukturiert und korrigiert. Danke für die Hinweise.

Beste Grüße, O. Richter

Was ist die Summe aus 5 und 7?

Bachten Sie: Für die Zuordnung Ihrer Nachricht werden die hier anzugebenden Daten Name, E-Mailadresse, Ihr Kommentar gespeichert. Sofern Sie den Wunsch der E-Mail-Benachrichtigung angegeben haben, wird aufgrund technischer Notwendigkeit auch dieser Wert gespeichert. Durch Absenden des Formulars erklären Sie sich damit einverstanden. Alternativ kontaktieren Sie mich bitte über meine E-Mailadresse oder Telefon.
Detaillierte und weitere Hinweise, insb. zum Widerrufsrecht finden Sie in der Datenschutzerklärung.

Sie befinden Sich in der Detailansicht eines Blog-Eintrags.

Um alle Blog-Einträge zu sehen, wechseln Sie bitte zur Nachrichten-Übersicht