Unable to install override in PrestaShop: ein Override-Konflikt und wie Sie ihn lösen
Die Meldung „Unable to install override“ in PrestaShop bedeutet, dass das installierte Modul eine Methode einer Klasse überschreiben will, die schon ein anderes Modul oder eine alte Datei im Ordner override überschreibt. PrestaShop führt zwei Overrides nicht selbst zusammen und stoppt deshalb die Installation. Die Lösung ist, den verwaisten Override zu entfernen oder den Code beider Module von Hand zusammenzuführen, mit Sicherungen.
Autor: Das TellMyShop-Team. Ein Ratgeber für Betreiber von PrestaShop-Shops: die Ursache, die Lösung von Hand und dieselbe Arbeit im Gespräch mit dem Chat.
Zuletzt aktualisiert: · 7 Min. Lesezeit
Woher kommt ein Override-Konflikt?
Ein Override ist eine Datei, mit der ein Modul einen Teil der Funktionsweise von PrestaShop ersetzt, zum Beispiel die Berechnung der Versandkosten im Warenkorb. Bei der Installation kopiert PrestaShop diese Datei aus dem Modulordner in den Ordner override des Shops. Bei der Deinstallation entfernt es sie dort.
Overrides sind exklusiv. Eine Methode einer Klasse kann nur eine ersetzte Version haben. Die PrestaShop-Entwicklerdokumentation sagt klar, dass ein Modul mit Override andere Module daran hindern kann, dasselbe Verhalten zu ändern. Deshalb empfiehlt das PrestaShop-Team Overrides nur in eigenen Modulen, während Module für den Verkauf Hooks nutzen.
Die häufigsten Situationen, die mit dieser Meldung enden:
| Situation | Woran Sie sie erkennen | Was meist hilft |
|---|---|---|
| Zwei Module ändern dieselbe Methode | die Meldung nennt Klasse und Methode, und in override liegt eine Datei mit dieser Methode von einem anderen Modul | den Code beider Overrides in einer Datei zusammenführen oder auf ein Modul verzichten |
| Ein von einem alten Modul zurückgelassener Override | das Modul steht nicht in der Liste, aber die Datei in override enthält noch seinen Code | die verwaiste Methode aus der Datei entfernen, mit Sicherung |
| Erneute Installation desselben Moduls | das Modul wurde mit einem Fehler deinstalliert und hat nicht aufgeräumt | die Reste entfernen, dann erneut installieren |
| Eine Änderung von Hand vor Jahren | eine Datei in override ohne Kommentar zu einem Modul, niemand weiß, woher sie stammt | beim früheren Entwickler erfragen, was sie tut, bevor Sie etwas anfassen |
| Ein alter Klassen-Cache | der Fehler kommt nach dem Entfernen des Overrides wieder | den Cache des Shops leeren |
Der polnische Modulanbieter PrestaShow beschreibt dasselbe Muster in seiner Wissensdatenbank (auf Polnisch): die vorhandene Datei umbenennen, das Modul installieren und dann beide Dateien von Hand zusammenführen. Er rät auch, dafür den Wartungsmodus einzuschalten.
So lösen Sie „Unable to install override“ Schritt für Schritt
Das ist eine Aufgabe für Ihren Entwickler. Unten steht eine Liste, die Sie weitergeben können. Jeder Schritt beginnt mit einer Sicherung, denn Dateien in override ändern die Funktionsweise des ganzen Shops.
- Speichern Sie die vollständige Meldung. Sie brauchen den Namen von Klasse und Methode. Ohne sie rät der Entwickler.
- Sichern Sie die Datenbank und den Ordner
override. Am besten den ganzen Shop, mindestens aber diesen Ordner und den Ordner des installierten Moduls. - Finden Sie die Datei, die diese Methode schon überschreibt. Für die Klasse
Cartist das meistoverride/classes/Cart.php. Module hinterlassen oft über der Methode einen Kommentar mit Modulname und Installationsdatum. - Prüfen Sie, ob das zugehörige Modul im Shop ist. Wenn nicht, ist die Methode verwaist und kann aus der Datei entfernt werden. Wenn ja, muss der Code beider Module so zusammengeführt werden, dass beide funktionieren.
- Leeren Sie den Cache. Unter Erweiterte Einstellungen → Leistung gibt es einen Button zum Leeren des Caches. PrestaShop baut dann die Liste der Klassen mit Overrides neu auf.
- Installieren Sie das Modul erneut und prüfen Sie den Warenkorb, die Lieferung oder was der Override sonst betrifft. Machen Sie eine Testbestellung.
Bei der Suche nach dem Verursacher hilft der Schalter „Alle Overrides deaktivieren“ unter Erweiterte Einstellungen → Leistung. Die funktionale Dokumentation von PrestaShop beschreibt ihn als Schalter für alle Overrides von Klassen und Controllern. Er wirkt auf den ganzen Shop, nutzen Sie ihn also nur kurz, am besten auf einer Testkopie.
Was Sie nicht tun sollten, wenn sich ein Modul nicht installieren lässt
Ein paar Abkürzungen, die aus einer Meldung ein größeres Problem machen:
- Eine Datei aus
overrideblind löschen. Das Modul, das sie ergänzt hat, funktioniert ohne jede Meldung nicht mehr. Manchmal sind das die Versandkosten oder ein Rabatt im Warenkorb. - Eine Methode von einer Datei in eine andere kopieren, ohne sie zu lesen. Zwei Versionen derselben Methode in einer Klasse sind ein PHP-Fehler und ein weißer Bildschirm.
- Dateien im Modulordner bearbeiten. Die Änderungen verschwinden beim Modul-Update, und der Konflikt kommt zurück.
- Overrides dauerhaft deaktiviert lassen. Module, die sie brauchen, funktionieren dann nur halb.
Ist nach der Installation ein Fehler 500 aufgetreten, lesen Sie den Leitfaden zum PrestaShop Fehler 500. Die Fehlermeldung finden Sie nach dem Einschalten des Debug-Modus.
Wie kann der Chat einem Entwickler bei einem Override-Konflikt helfen?
Ihr Chat (Claude oder ChatGPT) mit dem TellMyShop-Modul liest den Shop so, wie es ein Entwickler beim ersten Termin tun würde. Im kostenlosen TellMyShop Free sieht er die Modulliste mit Versionen und das Fehlerprotokoll des Shops, kann also helfen einzugrenzen, wann das Problem begann. Override- und Moduldateien liest nur TellMyShop Pro, ohne dass ein Schalter nötig ist.
Sie: Die Installation des Liefermoduls endet mit Unable to install override, Methode getOrderShippingCost in der Klasse Cart. Was mache ich?
Ihr Chat: In override/classes/Cart.php überschreibt das Modul für kostenlosen Versand die Methode getOrderShippingCost. Dieses Modul ist installiert und aktiv. Das neue Modul will dieselbe Methode überschreiben. Ich schlage vor, beide Versionen zusammenzuführen: Zuerst rechnet das neue Modul, und die Schwelle für kostenlosen Versand funktioniert wie jetzt. Vorschau der Änderung in der Datei:
Für das Speichern einer Datei im Ordner override brauche ich den Schalter Service. Vor dem Speichern lege ich eine Kopie der Datei an. Soll ich den vollständigen Code zeigen, damit Ihr Entwickler ihn prüft?
alte Version: public function getOrderShippingCost(...) { /* Version des Moduls für kostenlosen Versand */ }
neue Version: public function getOrderShippingCost(...) { /* zusammengeführte Version: neues Modul + Schwelle für kostenlosen Versand */ }
Modulnamen und Code im Beispiel sind frei gewählt. Im echten Gespräch zeigt der Chat den vollständigen Code der Methode, keine Zusammenfassung.
Was jeder Schritt braucht:
- Lesen von
override- und Moduldateien funktioniert in TellMyShop Pro sofort, für Textdateien bis 1 MB. - Ändern einer Datei im Modulordner braucht den Schalter Module, der 24 Stunden gilt.
- Ändern einer Datei im Ordner
overridedes Shops fällt unter den Schalter Service. Er gibt vollen technischen Zugriff und schaltet sich deshalb nach 3 Stunden selbst aus. - Erneutes Installieren eines Moduls aus einem ZIP-Paket braucht wieder den Schalter Module.
Beide Schalter lassen sich nur einschalten, wenn das Plugin eine erfolgreiche Datenbanksicherung vom selben Tag hat. Vor dem Speichern wird von jeder Datei eine Kopie angelegt, und PHP-Dateien werden auf Syntaxfehler geprüft. Jede Änderung sehen Sie zuerst in einer Vorschau, sie wird nach Ihrem „Ja“ gespeichert und landet im Änderungsverlauf. Die meisten Änderungen können Sie rückgängig machen, auch eine aus ihrer Kopie wiederhergestellte Datei. Das Deinstallieren eines Moduls lässt sich nicht rückgängig machen, deshalb schlägt der Chat zuerst das Deaktivieren vor.
Ehrlich gesagt: Beim Zusammenführen des Codes zweier Module zeigt der Chat die Ursache und einen Entwurf der Korrektur, aber ob die zusammengeführte Methode tut, was beide Module erwarten, entscheidet der Entwickler oder der Modulautor. Ein ähnliches Beispiel finden Sie im Anwendungsfall einen Fehler im Code eines Moduls beheben, das Lesen des Protokolls im Anwendungsfall Fehlermeldungen nach einem Modul-Update.
Wie vermeiden Sie Konflikte mit künftigen Modulen?
Fragen Sie vor dem Kauf eines Moduls den Autor, ob es Overrides nutzt und, falls ja, für welche Klassen. Module, die auf Hooks aufbauen, kollidieren seltener. Halten Sie sich bei der Installation an die Reihenfolge aus dem Leitfaden PrestaShop Modul installieren, und deaktivieren Sie ungenutzte Module, statt sie zu löschen, bis Sie sicher sind, dass sich nichts auf sie stützt.
Bevor Sie mit dem Aufräumen der Module beginnen, können Sie den Shop mit dem kostenlosen TellMyShop Free prüfen. Vollständiges Lesen und Speichern von Dateien mit Sicherungen funktionieren in TellMyShop Pro, die Preise stehen in den Preisen.
Fragen und Antworten
Was genau bedeutet die Meldung Unable to install override?
PrestaShop versucht, die Override-Datei des installierten Moduls in den Ordner override des Shops zu kopieren, und stößt auf eine Methode, die schon eine andere Datei ändert. Zwei Module können nicht dieselbe Methode derselben Klasse überschreiben, also bricht die Installation ab. Die Meldung nennt meist Klasse und Methode, zum Beispiel Cart und getOrderShippingCost.
Legt dieser Fehler einen laufenden Shop lahm?
Meist nicht. Die Installation des neuen Moduls wird nicht abgeschlossen, und der Shop funktioniert wie vor dem Versuch. Ärger beginnt, wenn jemand sich mit Gewalt durchsetzen will, zum Beispiel eine Datei aus dem Ordner override löscht, ohne zu prüfen, wem sie gehört.
Kann ich die Datei einfach aus dem Ordner override löschen?
Nur wenn Sie wissen, dass sie zu einem Modul gehört, das nicht mehr im Shop ist. Gehört die Datei zu einem funktionierenden Modul, tut dieses Modul nicht mehr, wofür es da ist, etwa die Lieferkosten auf eigene Weise berechnen. Prüfen Sie zuerst, welches Modul den Override ergänzt hat, und machen Sie eine Kopie der Datei.
Löst TellMyShop den Override-Konflikt von selbst?
Mit TellMyShop Pro liest der Chat beide Overrides, zeigt die widersprüchliche Methode und bereitet eine zusammengeführte Datei in einer Vorschau vor. Das Speichern einer Datei im Ordner override braucht den Schalter Service für 3 Stunden, und vor dem Speichern wird eine Kopie der Datei angelegt. Die Entscheidung, wie der Code zweier Module zusammengeführt wird, überlassen Sie trotzdem am besten einem Entwickler oder dem Modulautor.
PrestaShop ist eine eingetragene Marke der PrestaShop SA. Claude ist eine Marke der Anthropic PBC. ChatGPT und OpenAI sind Marken von OpenAI. TellMyShop ist mit diesen Unternehmen nicht verbunden.