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.xsdcomplex 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.
Was ist passiert?
Abschnitt betitelt „Was ist passiert?“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).
Lösung 1: Magento aktualisieren (empfohlen)
Abschnitt betitelt „Lösung 1: Magento aktualisieren (empfohlen)“Die saubere, dauerhafte Lösung. Aktualisiere auf Magento 2.4.8 oder neuer — damit ist das korrigierte Schema an Bord.
- Leg ein Backup von Dateien und Datenbank an.
- 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-updatecomposer updatebin/magento setup:upgrade - Starte den Reindex:
bin/magento indexer:reindex. - Der Index läuft durch — der Fehler ist weg.
Lösung 2: esconfig.xsd patchen
Abschnitt betitelt „Lösung 2: esconfig.xsd patchen“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:
- Öffne
vendor/magento/module-elasticsearch/etc/esconfig.xsdin einem Editor (per SSH oder über den File-Manager im Panel). - Such die folgende Zeile innerhalb von
mixedDataTypeund lösch sie:<xs:element type="xs:string" name="default" minOccurs="1" maxOccurs="1" /> - Speichere die Datei und leere den Cache:
Terminal-Fenster bin/magento cache:clean - Starte den Reindex neu:
Terminal-Fenster bin/magento indexer:reindex catalogsearch_fulltext
Warum kein libxml2-Downgrade?
Abschnitt betitelt „Warum kein libxml2-Downgrade?“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.
Wenn etwas schiefläuft
Abschnitt betitelt „Wenn etwas schiefläuft“Fehler bleibt nach dem Patch bestehen
Abschnitt betitelt „Fehler bleibt nach dem Patch bestehen“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.
Gleiche Meldung, aber andere Datei
Abschnitt betitelt „Gleiche Meldung, aber andere Datei“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.
Übrigens: gleicher Fehler, andere Software
Abschnitt betitelt „Übrigens: gleicher Fehler, andere Software“Der strengere libxml2-Determinismus-Check trifft nicht nur Magento. Shopware 6 meldet denselben Fehler in der config.xsd — wie du ihn dort behebst, steht im Shopware-Artikel.
Verwandte Artikel
Abschnitt betitelt „Verwandte Artikel“- Shopware: „The content model is not determinist” beheben — dasselbe Problem im Shopware-6-Admin.
- Backup & Wiederherstellung — vor jedem Update oder Patch Pflicht.
- Fehlersuche — weitere Diagnose-Quereinstiege.
Du kommst nicht weiter?
Abschnitt betitelt „Du kommst nicht weiter?“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.