Zum Inhalt springen

Magento: „The content model is not determinist" beheben

Zuletzt geprüft

Wenn dein Magento-Reindex mit „The content model is not determinist” in der Datei esconfig.xsd abbricht, liegt das an einem libxml2-Update auf deinem Server — nicht an deinem Shop oder deinen Daten. Betroffen sind alle Magento-2.4-Versionen vor 2.4.8. Der Fix ist ein Einzeiler in einer Schema-Datei; ab 2.4.8 ist er offiziell enthalten.

Die vollständige Fehlermeldung sieht so aus:

Catalog Search index process error during indexation process:
Processed schema file: .../vendor/magento/module-elasticsearch/etc/esconfig.xsd
complex type 'mixedDataType': The content model is not determinist.

Sie erscheint beim manuellen Reindex (bin/magento indexer:reindex), in den Cron-Logs — und in der Folge bleibt der Catalog-Search-Index veraltet: neue Produkte tauchen nicht in der Suche auf.

Die Bibliothek libxml2 C-Bibliothek für XML-Verarbeitung — Standard auf praktisch jedem Linux-Server. PHP nutzt sie für alle XML-Operationen. validiert ab Version 2.12.0 XSD-Schemata strenger. Mehrdeutige Schemata, die ältere Versionen fälschlich akzeptiert haben, werden jetzt abgelehnt. Das Update auf libxml2 ≥ 2.12 kam auf vielen Servern automatisch — als Teil der Sicherheitskorrektur für CVE-2024-25062 per Betriebssystem- oder Panel-Update. Hintergründe zur Lücke und weiteren betroffenen Systemen haben wir im Blog zusammengefasst: Problemlösungen zu CVE-2024-25062 (libxml2).

Magentos Elasticsearch-Schema vendor/magento/module-elasticsearch/etc/esconfig.xsd fällt durch die strengere Prüfung — der complex type mixedDataType ist mehrdeutig definiert. Magento hat das Schema mit Commit 308e2610 korrigiert — enthalten ab Magento 2.4.8.

Betroffen ist dein Shop, wenn beide Bedingungen zutreffen:

  • Magento 2.4.x vor 2.4.8 läuft, und
  • der Server libxml2 ≥ 2.12 hat (prüfbar per php -i | grep libxml).

Die saubere, dauerhafte Lösung. Aktualisiere auf Magento 2.4.8 oder neuer — damit ist das korrigierte Schema an Bord.

  1. Leg ein Backup von Dateien und Datenbank an.
  2. Führe das Update per Composer aus und schließe es ab:
    Terminal-Fenster
    composer require-commerce magento/product-community-edition 2.4.8 --no-update
    composer update
    bin/magento setup:upgrade
  3. Starte den Reindex: bin/magento indexer:reindex.
  4. Der Index läuft durch — der Fehler ist weg.

Für alle 2.4er-Versionen vor 2.4.8 lässt sich das Schema direkt korrigieren. Es genügt, eine mehrdeutige Zeile zu entfernen:

  1. Öffne vendor/magento/module-elasticsearch/etc/esconfig.xsd in einem Editor (per SSH oder über den File-Manager im Panel).
  2. Such die folgende Zeile innerhalb von mixedDataType und lösch sie:
    <xs:element type="xs:string" name="default" minOccurs="1" maxOccurs="1" />
  3. Speichere die Datei und leere den Cache:
    Terminal-Fenster
    bin/magento cache:clean
  4. Starte den Reindex neu:
    Terminal-Fenster
    bin/magento indexer:reindex catalogsearch_fulltext

Ein Downgrade oder Pinning von libxml2 auf < 2.12 würde den Fehler ebenfalls beseitigen — wir raten davon ab. Du hältst damit eine Bibliothek mit bekannter Sicherheitslücke (CVE-2024-25062) auf dem Server, und beim nächsten Betriebssystem-Update bricht der Reindex erneut. Die Ursache liegt im Magento-Schema; dort gehört auch die Korrektur hin.

Bei mehreren Magento-Instanzen (Staging/Live) ist schnell die falsche editiert.

Lösung: Prüfen, ob die Zeile wirklich in der aktiven Installation entfernt wurde. Danach bin/magento cache:clean und den Reindex erneut anstoßen.

Cron meldet den Fehler weiter, manueller Reindex läuft durch

Abschnitt betitelt „Cron meldet den Fehler weiter, manueller Reindex läuft durch“

Der Cron arbeitet noch eine alte, fehlgeschlagene Index-Queue ab.

Lösung: Einmal bin/magento indexer:reset catalogsearch_fulltext gefolgt von bin/magento indexer:reindex catalogsearch_fulltext — das setzt den Index sauber neu auf.

Auch Dritt-Module liefern eigene XSD-Schemata mit, die an libxml2 ≥ 2.12 scheitern können. Die Fehlermeldung nennt die Datei.

Lösung: Modul-Update einspielen oder den Hersteller des Moduls kontaktieren.

Der strengere libxml2-Determinismus-Check trifft nicht nur Magento. Shopware 6 meldet denselben Fehler in der config.xsdwie du ihn dort behebst, steht im Shopware-Artikel.

Wenn der Reindex nach Patch oder Update weiter abbricht: Ticket im Kundencenter öffnen. Hilfreich für die Diagnose: deine Magento-Version, die vollständige Fehlermeldung aus dem Reindex-Lauf und ob der Fehler per CLI, Cron oder beidem auftritt.