Von 6.1.x auf 6.2.0 aktualisieren

Dieses Dokument beschreibt das Update von OXID eShop 6.1.0 und höher auf OXID eShop 6.2.0. Es unterscheidet sich vor allem durch die Übernahme der Modulkonfigurationen aus der Datenbank von einem Standard-Update.

schritt Aktualisierung des Shops

  1. In der Datei composer.json, die sich im Hauptverzeichnis des Shops befindet, müssen Version geändert werden. Das betrifft die Sektion „require“ und „require-dev“.

OXID eShop Community Edition 6.2.0

"require": {
   "oxid-esales/oxideshop-metapackage-ce": "v6.2.0"
},
"require-dev": {
   "oxid-esales/testing-library": "^v7.0.1",
   "incenteev/composer-parameter-handler": "^v2.0",
   "oxid-esales/oxideshop-ide-helper": "^v3.1.2",
   "oxid-esales/azure-theme": "^v1.4.2"
},

OXID eShop Professional Edition 6.2.0

"require": {
   "oxid-esales/oxideshop-metapackage-pe": "v6.2.0"
},
"require-dev": {
   "oxid-esales/testing-library": "^v7.0.1",
   "incenteev/composer-parameter-handler": "^v2.0",
   "oxid-esales/oxideshop-ide-helper": "^v3.1.2",
   "oxid-esales/azure-theme": "^v1.4.2"
},

OXID eShop Enterprise Edition 6.2.0

"require": {
   "oxid-esales/oxideshop-metapackage-ee": "v6.2.0"
},
"require-dev": {
   "oxid-esales/testing-library": "^v7.0.1",
   "incenteev/composer-parameter-handler": "^v2.0",
   "oxid-esales/oxideshop-ide-helper": "^v3.1.2",
   "oxid-esales/azure-theme": "^v1.4.2"
},
  1. Leeren Sie das Verzeichnis mit den temporären Dateien des Shops, indem Sie beispielsweise eine Shell im Hauptverzeichnis des Shops aufrufen und folgendes Kommando eingeben:

rm -rf source/tmp/*
  1. Führen Sie in der Shell den nachstehenden Composer-Befehl aus, um die Abhängigkeiten zu aktualisieren. Der Parameter --no-dev wird angegeben, wenn die entwicklungsbezogenen Dateien nicht benötigt werden.

composer update --no-plugins --no-scripts --no-dev
  1. Kopieren Sie nun die Datei overridablefunctions.php vom Verzeichnis /vendor des Shops in das Verzeichnis /source.

cp vendor/oxid-esales/oxideshop-ce/source/overridablefunctions.php source/
  1. Mit einem zweiten Composer-Befehl werden alle Scripts ausgeführt, um die neue Compilation zu beziehen. Für Shopdateien, Themes und Module muss jeweils bestätigt werden, dass das Update bestehende Dateien überschreibt. Haben Sie eigene Module mit "type": "path" in Ihre Datei composer.json eingebunden, beantworten Sie die Nachfrage zum Überschreiben bitte mit Nein.

composer update --no-dev
  1. Der dritte und letzte Composer-Befehl führt die Migration der Datenbank aus.

vendor/bin/oe-eshop-db_migrate migrations:migrate

schritt Aktualisierung der Modulkonfigurationen

In diesem Arbeitsschritt werden Einstellungen und Aktivierungsstatus der zum Shop gehörenden Module aus der Datenbank in Konfigurationsdateien *.yaml transferiert.

  1. Mit den nachfolgenden Composer-Kommandos, welche im Hauptverzeichnis des Shops aufgerufen werden, installieren Sie die OXID eShop update component.

composer require --no-update oxid-esales/oxideshop-update-component:"^1.0"
composer update --no-dev --no-interaction
  1. Leeren Sie das Verzeichnis mit den temporären Dateien des Shops, indem Sie beispielsweise eine Shell im Hauptverzeichnis des Shops aufrufen und folgendes Kommando eingeben:

rm -rf source/tmp/*
  1. Für alle Module, die sich im Verzeichnis source/modules befinden, wird eine Standardkonfiguration erstellt. Dafür wird die neue OXID eShop Console mit folgendem Kommando aufgerufen:

vendor/bin/oe-console oe:oxideshop-update-component:install-all-modules
  1. Die vorhandenen Moduldaten (Moduleinstellungen, Klassenerweiterungsketten, Aktivierungsstatus) werden aus der Datenbank in die Konfigurationsdateien *.yaml übertragen.

vendor/bin/oe-console oe:oxideshop-update-component:transfer-module-data

Nach diesem Arbeitsschritt sollte in der Konfigurationsdatei aller zuvor aktiven Module die Option `configured = true` sein. Die Konfigurationsdatei enthält jetzt auch die Moduleinstellungen. Es sind die selben, die im Administrationsbereich beim Modul festgelegt wurden.
  1. Um Datenredundanz und Probleme bei der Aktivierung von Modulen zu vermeiden, werden deren Status und Einstellungen aus der Datenbank entfernt.

vendor/bin/oe-console oe:oxideshop-update-component:delete-module-data-from-database
  1. Alle Module, die zuvor aktiv waren, werden aktiviert und die Moduleinstellungen wiederhergestellt.

vendor/bin/oe-console oe:module:apply-configuration

Hint

In einer Enterprise Edition Umgebung mit mindestens zwei Shops und aktiven Legacy Modulen kann der Befehl einen Fehler auslösen. Als Workaround sollte das Kommando für jeden einzelnen Shop durch Hinzufügen des Parameters –shop-id ausgeführt werden.

Beispiel:

vendor/bin/oe-console oe:module:apply-configuration --shop-id=1
vendor/bin/oe-console oe:module:apply-configuration --shop-id=2
  1. Deinstallieren Sie die OXID eShop update component.

composer remove --no-update oxid-esales/oxideshop-update-component
composer update --no-dev --no-interaction

schritt Alte Dateien entfernen

Die Datei xd_receiver.htm aus dem Verzeichnis /source wird nicht mehr benötigt und sollte gelöscht werden.


Fehlersuche und -behebung

Hinweise auf mögliche Probleme bei der Übernahme von Status und Einstellungen der Module finden sich im Dokument Update from 6.1.x to 6.2.0 der englischsprachigen Entwicklerdokumentation.

  • Fehlermeldung: `Module directory of ModuleX could not be installed due to The variable $sMetadataVersion must be present in ModuleX/metadata.php and it must be a scalar.`

    • Bis OXID eShop 6.1 wurden Module ohne Metadata-Version in der Datei metadata.php akzeptiert. OXID eShop 6.2 setzt die Metadata-Version in ModuleX metadata.php voraus.

  • Fehlermeldung: `The metadata key constrains is not supported in metadata version 2.0.`

  • Die „Erweiterungs-Kette“ im OXID eShop Admin in Extension ‣ Modules ‣ Installed Shop Modules ist zum Teil Rot hervorgehoben und durchgestrichen.

    • Dies muss kein Fehler sein. Bis OXID eSHOP 6.1 dürfen nur Erweiterungen von aktiven Modulen angezeigt werden. OXID zeigt ab eSHOP 6.2, die Erweiterungen von allen installierten Modulen (aktiv und inaktiv). Wenn ein Modul inaktiv ist, ist die Erweiterung des Moduls Rot hervorgehoben und durchgestrichen. Das neue Verhalten ermöglicht auch die Konfiguration der Erweiterungs-Kette von Modulen, die bisher nicht aktiviert wurden.