Exponential 6 und Exponential Platform Legacy
Exponential Platform Legacy (se7enxweb/exponential-platform-legacy) betreibt den Kernel von Exponential 6 und eine
Symfony-Plattform auf einer Datenbank, verbunden durch se7enxweb/legacy-bridge. Es ist der schonendste Weg, einer
Exponential-6-Site den Symfony-Stack zu geben: Die Inhalte, die Legacy-Administration, die TPL-Templates und die
Extensions arbeiten weiter, während Twig-Templates, REST v2 und die Plattform-Administration hinzukommen. Und weil auf
der Legacy-Seite nichts entfernt wird, ist der Rückweg kurz.
Übersicht Migration · Checkliste · Das eigene Handbuch des Produkts: Exponential Platform Legacy, Kapitel 11: Migration nach Exponential Platform Legacy
Inhalt
- 1. Die Release-Linien
- 2. Ist es das richtige Ziel?
- 3. Von Exponential 6 zu Platform Legacy
- 4. Wechsel auf eine neuere Linie
- 5. Von Platform Legacy zurück zu Exponential 6 allein
- 6. Prüfen
- 7. Rückweg
- 8. Risiken
- 9. Checkliste
1. Die Release-Linien
Ausgelesen aus der composer.json jedes Release-Tags am 2026-10-18 (Übersicht, 1.2):
| Linie | Neuestes Release | Generation | Symfony | PHP | Bridge |
|---|---|---|---|---|---|
v2.5.0.x | v2.5.0.4 | Fork des Kernels von eZ Platform 2.5 (~7.5.33) | 3.4 | ^7.1.3 || ^8.1 || ^8.2 | ^2.1, mit se7enxweb/exponential ^6.0.12 |
v3.3.44.x | v3.3.44.8 | 3.3 (se7enxweb/oss ~3.3.0.0) | 5.4 | ^8.0 | ^3.0.0.35 |
v4.6.23.x | v4.6.23.3 | 4.6 (exponential-platform-dxp 4.6.x-LB-dev) | 5.4 | ^7.4 bis ^8.5 | ^4.0.0.0 |
v5.0.x | v5.0.3.1 | v5 (exponential-platform-dxp dev-5.x-LB) | 7.4 | >=8.3 | ^5.0.0.0 |
Warnung
v5.0.3enthält diecomposer.jsonder Linie 2.5. Für v5 fordern Sie~5.0.3.1an (so macht es auch die README des Produkts:composer create-project se7enxweb/exponential-platform-legacy:~5.0.3.1), niemals ein bloßes^5.0.
Eine sofort lauffähige Variante der Linie v5 ist se7enxweb/exponential-platform-legacy-starter (1.0.0.0).
2. Ist es das richtige Ziel?
| Sie möchten | Ist Platform Legacy richtig? |
|---|---|
| Symfony-Controller, Twig, REST v2, GraphQL neben der Legacy-Administration und den TPL-Seiten | Ja |
| Die öffentliche Site Seite für Seite auf Twig portieren, ohne einen Komplettumstieg auf einen Schlag | Ja |
| Nur den Legacy-Kernel, ausgeliefert von Velocity oder PHP-FPM | Nein: Bleiben Sie bei Exponential 6 allein. Das Handbuch des Produkts sagt, der Hybrid „lohnt sich nur, wenn Sie Symfony-Controller, REST v2, GraphQL oder die Plattform-Administration wollen“ |
| Einen visuellen Seitenbaukasten auf der Symfony-Seite | Sehen Sie sich Nexus an, das Exponential Layouts mitbringt |
| Ein reines Symfony-Projekt ohne den Legacy-Kernel | DXP |
Was sich für die Site ändert, wenn der Symfony-Stack sie ausliefert:
- Symfony beantwortet die Anfragen; die Legacy-Siteaccesses werden über die Bridge erreicht (
legacy_mode: true). Velocity, das Exponential 6 allein ausliefert, ist nicht der Server eines Platform-Legacy-Projekts. - Die Zugangsdaten der Datenbank stehen nur in der Konfiguration von Symfony; die Bridge reicht sie an den Legacy-Kernel weiter.
- Bild-Aliase kommen aus den YAML-Bildvarianten; Aliase, die nur in
image.inistehen, müssen dort deklariert werden. - Die Anmeldung an Nicht-Legacy-Siteaccesses übernimmt Symfony. Beide Kernel lesen die Legacy-Passwort-Hashes, aber Plattform-Generationen ab 3.0 akzeptieren nur die Typen 6 und 7 (17.7).
- Datenbank-Engines: Die Plattformseite unterstützt MySQL/MariaDB und PostgreSQL; SQLite wird im Schnellstart von v5 für die Entwicklung angeboten. MongoDB und Oracle, die Exponential 6 unterstützt, sind keine Engines der Plattform: Ziehen Sie eine solche Site zuerst auf MySQL, MariaDB oder PostgreSQL um (Datenbanken).
3. Von Exponential 6 zu Platform Legacy
Eine Exponential-6-Datenbank ist eine Legacy-Datenbank, die den Schritt 5.4 der alten Kette bereits hinter sich hat; Sie folgen also Kapitel 11.3 des Produkts ohne dessen Legacy-Update-Kette.
Landen Sie zuerst auf der Linie 2.5. Das Handbuch des Produkts: Das Plattformschema von 2.5 „ist das vollständige Legacy-Schema“, es fehlt also nichts, was die Legacy-Site verwendet; steigen Sie danach Linie für Linie auf (4).
- Frieren Sie ein und sichern Sie die Datenbank und
var/<site>/storage. Spielen Sie die Sicherung einmal auf einem Testrechner zurück. - Bringen Sie Exponential 6 auf sein neuestes Release (Kapitel 11.6) und prüfen Sie die Versionszeilen (11.2).
- Stellen Sie unter MySQL die Tabellen auf
utf8mb4um. Der Plattform-Kernel 2.5 legtutf8mb4-Tabellen an, und das Legacy-Override der Distribution sprichtutf8mb4mit dem Server; Kapitel 11.3 des Produkts enthält die Abfrage, die die AnweisungenALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4zum Prüfen und Ausführen ausgibt. - Wenden Sie die Update-Dateien des Plattform-Kernels 2.5 an, aus
vendor/se7enxweb/ezpublish-kernel/data/update/<engine>/, in der Reihenfolge, die Kapitel 11.3, Schritt 3, des Produkts angibt. Auf einer Exponential-6-Datenbank ist das meiste, was sie tun (das breiterepassword_hash,ezcontentobject_trash.trashed, die Sequenznamen unter PostgreSQL), bereits vorhanden; Kapitel 10.7 des Produkts erklärt, welche Anweisungen gefahrlos wiederholt werden können. Führen Sie sie auf der Kopie aus und lesen Sie jeden Fehler: Ein „duplicate column“ bedeutet, dass die Änderung bereits vorhanden ist; alles andere stoppt die Migration. - Legen Sie die Tabellen an, die der Kernel 2.5 erwartet und die einer reinen Legacy-Datenbank fehlen (zum
Beispiel
ezcontentclass_attribute_ml,eznotification): Vergleichen Sie Ihre Tabellenliste mitdata/mysql/schema.sqldes installiertense7enxweb/ezpublish-kernelund legen Sie die fehlenden aus dieser Datei an (Kapitel 16.6.1 enthält den Vergleich). - Legen Sie das 2.5-Projekt mit einer ausdrücklich angegebenen Version an und richten Sie es auf die migrierte
Datenbank aus, ohne den Installer auszuführen: Das Handbuch des Produkts warnt, dass
ezplatform:install/exponential:installdie Tabellen, die sie kennen, löschen und neu anlegen. - Verschieben Sie den Speicher nach
ezpublish_legacy/var/<site>/storage(oder in das Verzeichnis, das IhrVarDirnennt). - Verschieben Sie die Legacy-Konfiguration:
settings/override/nachezpublish_legacy/settings/override/, die Siteaccess-Verzeichnisse nachezpublish_legacy/settings/siteaccess/, und entfernen Sie die Verbindungswerte aus[DatabaseSettings]. - Deklarieren Sie die Siteaccesses in YAML mit denselben Namen; die Legacy-Siteaccesses erhalten
legacy_mode: true. Deklarieren Sie jeden Bild-Alias, den die Legacy-Designs verwenden, als Bildvariante. - Verschieben Sie Ihre Extensions in das Projekt und aktivieren Sie sie; erzeugen Sie die Autoloads über die
Bridge neu (
php bin/console ezpublish:legacy:script bin/php/ezpgenerateautoloads.php). - Prüfen Sie das Schema mit
ezsqldiff.php, zuerst das Referenzschema und dann Ihre Datenbank (Kapitel 11.3, Schritt 10, des Produkts und das Nexus-Handbuch, 12.4 erklären die Reihenfolge der Argumente).DROP-Zeilen für Tabellen, die nur die Plattform hat, sind zu erwarten. - Lassen Sie den Legacy-Cron über die Bridge laufen, leeren Sie die Caches beider Seiten, indizieren Sie neu und prüfen Sie (6).
Was nicht umziehen muss: Die Inhalte, die Klassen, die Benutzer, Rollen, Sektionen, Zustände, URL-Aliase und die Daten von Exponential Layouts bleiben in der gemeinsamen Datenbank und werden von der Legacy-Seite wie bisher gelesen.
4. Wechsel auf eine neuere Linie
Wechseln Sie jeweils um eine Linie, mit Kapitel 10 des Produkts (Upgrade zwischen Release-Linien):
| Schritt | Datenbank | Hinweise aus dem Handbuch des Produkts |
|---|---|---|
| 2.5 auf 3.3 | upgrade/db/<engine>/ezplatform-2.5.latest-to-3.0.0.sql, ezplatform-3.2.0-to-3.3.0.sql, ezplatform-3.2.3-to-3.2.4.sql (im Branch master von se7enxweb/exponential-platform) | keine der Dateien löscht eine Tabelle, die reinen Legacy-Tabellen bleiben also erhalten; die erste Datei löscht die Zeile ezpublish-version, die für die Legacy-Update-Dateien wiederhergestellt werden muss. Für SQLite gibt es keine Upstream-Dateien |
| 3.3 auf 4.6, 4.6 auf v5 | Kapitel 10.6 des Produkts | unter 4.6 zuerst die reinen Legacy-Tabellen anlegen; bei einer v5-Datenbank muss die Übersetzer-Extension (se7enxweb/sevenx_exponential_platform_v5_database_translator) der erste Eintrag von ActiveExtensions[] sein, weil v5 die Kerntabellen in ibexa_* umbenennt |
Jeder Linienwechsel ändert auch Projektstruktur und Konfiguration (zum Beispiel app/config zu config/, web/ zu
public/ von 2.5 auf 3.x); das Kapitel des Produkts führt diese Änderungen auf.
5. Von Platform Legacy zurück zu Exponential 6 allein
Die Legacy-Hälfte ist eine vollständige Exponential-6-Installation; zurückzugehen heißt, sie die Site wieder ausliefern zu lassen.
- Sichern Sie die gemeinsame Datenbank und den Speicher.
- Entscheiden Sie, was mit reinen Symfony-Inhalten geschieht. RichText-Felder, Exponential Layouts oder andere reine Plattformdaten haben keine eigene Darstellung auf der Legacy-Seite: Listen Sie die verwendeten Feldtypen auf und prüfen Sie sie anhand von Kapitel 16.6.3.
- Bei einer v5-Datenbank machen Sie die Umbenennungen in
ibexa_*rückgängig (oder lassen die Übersetzer-Extension aktiv) (Kapitel 16.6.4, Schritt 2). - Prüfen Sie das Schema mit
ezsqldiff.phpgegen Exponential 6 (Referenz zuerst) und ergänzen Sie die fehlenden Tabellen und Spalten; wenden Sie danach die aktuellen Dateien ausupdate/database/<engine>/6.0/so an, wie Kapitel 11.6 es beschreibt. - Installieren Sie Exponential 6 (empfohlen ist ein Git-Klon mit Historie, Kapitel 3),
kopieren Sie
ezpublish_legacy/settings/override/,settings/siteaccess/, die Extensions und den Speicher hinein und tragen Sie die Datenbankverbindung wieder insettings/override/site.ini.append.phpein. - Liefern Sie sie aus mit Velocity oder Apache/nginx mit PHP-FPM (Kapitel 8); die Adressen der Legacy-Siteaccesses bleiben gleich; Adressen, die über Symfony-Routen ausgeliefert wurden (REST v2, reine Twig-Seiten), brauchen Weiterleitungen oder einen Ersatz.
- Passwörter: Benutzer, die sich auf der Symfony-Seite angemeldet haben, haben Hashes vom Typ 7, die Exponential 6 lesen kann.
6. Prüfen
- Anzahl der Objekte pro Klasse und Sprache, der Benutzer und der URL-Aliase vorher und nachher.
- Die Startseite, eine Seite pro Klasse, beide Administrationen: In jeder ein Element bearbeiten und veröffentlichen.
- Eine Bildvariante, ein Upload, die Suche, die Legacy-Cronjob-Teile von Hand ausgeführt.
var/logvon Symfony undezpublish_legacy/var/log/error.logsind frei von Fehlern.- Das Handbuch des Produkts enthält die Befehle pro Linie (Kapitel 10.8).
7. Rückweg
Die Update-Dateien der Plattform ändern Zeilen und fügen Tabellen hinzu, lassen sich aber nicht durch eine weitere SQL-Datei rückgängig machen. Der Rückweg ist die Sicherung aus Schritt 1 plus die alte Exponential-6-Installation, die unangetastet bleibt, bis die neue eine Weile im Produktivbetrieb gelaufen ist.
8. Risiken
| Risiko | Gegenmaßnahme |
|---|---|
| Der Installer wird gegen die migrierte Datenbank ausgeführt | niemals ausführen; das Handbuch des Produkts wiederholt diese Warnung in jedem Kapitel |
| Zwei Konfigurationen laufen auseinander | Datenbankeinstellungen nur in Symfony; eine einzige Liste der Siteaccess-Namen |
| Bild-Aliase fehlen auf der Symfony-Seite | vor der ersten Anfrage als Varianten deklarieren |
| Site auf MongoDB oder Oracle | zuerst auf MySQL, MariaDB oder PostgreSQL umziehen |
| Alte Passwort-Hash-Typen | Benutzer vor dem Wechsel auf 3.3 oder später um ein Zurücksetzen bitten |
| Eine v5-Datenbank, die ein Legacy-Kernel ohne den Übersetzer liest | Übersetzer an erster Stelle in ActiveExtensions[] |
9. Checkliste
- To do: Linie gewählt (auf 2.5 landen, später aufsteigen); Version ausdrücklich angegeben.
- To do: Exponential 6 auf seinem neuesten Release; Sicherung einmal zurückgespielt.
- To do: MySQL-Tabellen auf
utf8mb4; Update-Dateien des Kernels 2.5 angewendet und ihre Fehler gelesen. - To do: Fehlende 2.5-Tabellen angelegt;
ezsqldiff.php(Referenz zuerst) zeigt keine fehlende Tabelle oder Spalte. - To do: Projekt angelegt, Installer nicht auf den Daten ausgeführt; Speicher verschoben.
- To do: Legacy-Einstellungen verschoben, Verbindungswerte entfernt; Siteaccesses in YAML mit
legacy_mode. - To do: Bild-Aliase als Varianten deklariert; Extensions verschoben und Autoloads neu erzeugt.
- To do: Caches auf beiden Seiten geleert, Suche neu indiziert, Cron über die Bridge.
- To do: Frontend und beide Administrationen geprüft; Plan für den Rückweg abgestimmt.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.
Diese Seite ist Teil der Exponential-Dokumentation und freie Dokumentation unter der GNU Free Documentation License 1.3 oder einer späteren Version (die Lizenz dieser Dokumentation).