Impossible d’installer l’override dans PrestaShop : un conflit d’overrides et comment le résoudre
Le message « Unable to install override » (impossible d’installer l’override) signifie que le module installé veut surcharger une méthode déjà surchargée par un autre module ou un vieux fichier du dossier override. PrestaShop ne fusionne pas deux overrides : il arrête l’installation. La solution : supprimer l’override orphelin ou fusionner à la main le code des deux modules, avec des sauvegardes.
Auteur: L’équipe TellMyShop. Un guide pour les propriétaires de boutiques PrestaShop : la cause, la correction manuelle et le même travail dans une conversation avec le chat.
Dernière mise à jour: · 7 min de lecture
D’où vient un conflit d’overrides ?
Un override est un fichier par lequel un module remplace une partie du fonctionnement de PrestaShop, par exemple le calcul des frais de port dans le panier. À l’installation, PrestaShop copie ce fichier du dossier du module vers le dossier override de la boutique. À la désinstallation, il l’en retire.
Les overrides sont exclusifs. Une méthode d’une classe ne peut avoir qu’une seule version remplacée. La documentation pour développeurs PrestaShop dit clairement qu’un module avec un override peut empêcher d’autres modules de modifier le même comportement. C’est pourquoi l’équipe PrestaShop ne recommande les overrides que dans vos propres modules, alors que les modules vendus utilisent les hooks.
Les situations les plus fréquentes qui finissent par ce message :
| Situation | Comment la reconnaître | Ce qui aide en général |
|---|---|---|
| Deux modules modifient la même méthode | le message nomme la classe et la méthode, et override contient un fichier avec cette méthode d’un autre module | fusionner le code des deux overrides dans un seul fichier, ou renoncer à un module |
| Un override laissé par un ancien module | le module n’est pas dans la liste, mais le fichier dans override contient toujours son code | supprimer la méthode orpheline du fichier, avec une sauvegarde |
| Réinstallation du même module | le module a été désinstallé avec une erreur et n’a pas fait le ménage | supprimer les restes, puis réinstaller |
| Une modification manuelle d’il y a des années | un fichier dans override sans commentaire sur un module, personne ne se souvient d’où il vient | demander au développeur précédent ce qu’il fait avant de toucher à quoi que ce soit |
| Un ancien cache des classes | l’erreur revient après la suppression de l’override | vider le cache de la boutique |
L’éditeur polonais de modules PrestaShow décrit le même schéma dans sa base de connaissances (en polonais) : renommer le fichier existant, installer le module, puis fusionner les deux fichiers à la main. Il conseille aussi d’activer le mode maintenance pendant ce temps.
Comment résoudre « Unable to install override » pas à pas
C’est un travail pour votre développeur. Voici une liste que vous pouvez lui transmettre. Chaque étape commence par une sauvegarde, car les fichiers de override changent le fonctionnement de toute la boutique.
- Notez le message complet. Il vous faut le nom de la classe et de la méthode. Sans eux, le développeur devine.
- Sauvegardez la base de données et le dossier
override. Idéalement toute la boutique, ou au moins ce dossier et le dossier du module à installer. - Trouvez le fichier qui surcharge déjà cette méthode. Pour la classe
Cart, c’est en généraloverride/classes/Cart.php. Les modules laissent souvent au-dessus de la méthode un commentaire avec le nom du module et la date d’installation. - Vérifiez si le module propriétaire est dans la boutique. S’il n’y est pas, la méthode est orpheline et peut être retirée du fichier. S’il y est, il faut fusionner le code des deux modules pour que les deux fonctionnent.
- Videz le cache. Paramètres avancés → Performances a un bouton pour vider le cache. PrestaShop reconstruit alors la liste des classes avec overrides.
- Réinstallez le module et vérifiez le panier, la livraison ou ce que touche l’override. Passez une commande de test.
Pour chercher le coupable, l’interrupteur « Désactiver tous les overrides » dans Paramètres avancés → Performances aide. La documentation fonctionnelle de PrestaShop le décrit comme l’interrupteur de tous les overrides de classes et de contrôleurs. Il agit sur toute la boutique : utilisez-le brièvement, idéalement sur une copie de test.
Ce qu’il ne faut pas faire quand un module ne s’installe pas
Quelques raccourcis qui transforment un message en un problème plus gros :
- Supprimer à l’aveugle un fichier de
override. Le module qui l’a ajouté cesse de fonctionner sans aucun message. Parfois, ce sont les frais de port ou une réduction dans le panier. - Copier une méthode d’un fichier à l’autre sans la lire. Deux versions de la même méthode dans une classe, c’est une erreur PHP et un écran blanc.
- Modifier les fichiers dans le dossier du module. Les modifications disparaissent à la mise à jour du module, et le conflit revient.
- Laisser les overrides désactivés pour de bon. Les modules qui en ont besoin ne fonctionnent alors qu’à moitié.
Si une erreur 500 est apparue après l’installation, consultez le guide sur l’erreur 500 dans PrestaShop. Vous trouverez le message d’erreur après avoir activé le mode debug.
Comment le chat peut-il aider un développeur face à un conflit d’overrides ?
Votre chat (Claude ou ChatGPT) avec le module TellMyShop lit la boutique comme le ferait un développeur à un premier rendez-vous. Dans la version gratuite TellMyShop Free, il voit la liste des modules avec leurs versions et le journal des erreurs de la boutique : il peut donc aider à situer le début du problème. Seul TellMyShop Pro lit les fichiers des overrides et des modules, sans interrupteur à activer.
Vous: L’installation du module de livraison se termine par Unable to install override, méthode getOrderShippingCost de la classe Cart. Que faire ?
Votre chat: Dans override/classes/Cart.php, la méthode getOrderShippingCost est surchargée par le module de livraison gratuite. Ce module est installé et activé. Le nouveau module veut surcharger la même méthode. Je propose de fusionner les deux versions : le nouveau module calcule d’abord, et le seuil de livraison gratuite fonctionne comme maintenant. Aperçu de la modification du fichier :
L’enregistrement d’un fichier dans le dossier override exige l’interrupteur Maintenance. Je ferai une copie du fichier avant l’enregistrement. Je montre le code complet pour que votre développeur le vérifie ?
ancienne version : public function getOrderShippingCost(...) { /* free shipping module version */ }
nouvelle version : public function getOrderShippingCost(...) { /* merged version: new module + free shipping threshold */ }
Les noms de modules et le code de l’exemple sont fictifs. Dans une vraie conversation, le chat montre le code complet de la méthode, pas un résumé.
Ce qu’exige chaque étape :
- La lecture des fichiers de
overrideet des modules fonctionne tout de suite dans TellMyShop Pro, pour les fichiers texte jusqu’à 1 Mo. - La modification d’un fichier dans le dossier d’un module exige l’interrupteur Modules, qui dure 24 heures.
- La modification d’un fichier dans le dossier
overridede la boutique relève de l’interrupteur Maintenance. Il donne un accès technique complet : il se désactive donc tout seul au bout de 3 heures. - La réinstallation d’un module depuis un paquet ZIP exige de nouveau l’interrupteur Modules.
Vous ne pouvez activer l’un ou l’autre interrupteur que si le module a une sauvegarde réussie de la base de données du jour même. Une copie de chaque fichier est faite avant son enregistrement, et la syntaxe des fichiers PHP est vérifiée. Vous voyez d’abord chaque modification dans un aperçu, elle est enregistrée après votre « oui » et entre dans l’historique des modifications. Vous pouvez annuler la plupart des modifications, y compris restaurer un fichier depuis sa copie. La désinstallation d’un module ne s’annule pas : le chat propose donc de le désactiver d’abord.
Soyons honnêtes : quand il s’agit de fusionner le code de deux modules, le chat montre la cause et un projet de correction, mais c’est au développeur ou à l’auteur du module de décider si la méthode fusionnée fait ce qu’attendent les deux modules. Vous trouverez un exemple semblable dans le cas d’usage corriger un bug dans le code d’un module, et la lecture du journal dans le cas d’usage messages d’erreur après la mise à jour d’un module.
Comment éviter les conflits avec les prochains modules ?
Avant d’acheter un module, demandez à l’auteur s’il utilise des overrides et, si oui, pour quelles classes. Les modules construits sur les hooks entrent moins souvent en conflit. À l’installation, suivez l’ordre du guide sur comment installer un module PrestaShop, et désactivez les modules inutilisés au lieu de les supprimer tant que vous n’êtes pas sûr que rien n’en dépend.
Avant de vous lancer dans le rangement des modules, vous pouvez vérifier la boutique avec la version gratuite TellMyShop Free. La lecture complète des fichiers et l’enregistrement avec sauvegardes fonctionnent dans TellMyShop Pro ; les prix sont sur la page tarifs.
Questions et réponses
Que signifie exactement le message Unable to install override ?
PrestaShop essaie de copier le fichier d’override du module en cours d’installation dans le dossier override de la boutique et tombe sur une méthode qu’un autre fichier modifie déjà. Deux modules ne peuvent pas surcharger la même méthode de la même classe : l’installation s’arrête donc. Le message nomme en général la classe et la méthode, par exemple Cart et getOrderShippingCost.
Cette erreur casse-t-elle une boutique qui fonctionne déjà ?
En général non. L’installation du nouveau module ne se termine pas, et la boutique fonctionne comme avant la tentative. Les ennuis commencent quand quelqu’un essaie de passer en force, par exemple en supprimant un fichier du dossier override sans vérifier à qui il appartient.
Puis-je simplement supprimer le fichier du dossier override ?
Seulement si vous savez qu’il appartient à un module qui n’est plus dans la boutique. Si le fichier appartient à un module en service, ce module cessera de faire ce pour quoi il est là, par exemple calculer la livraison à sa façon. Vérifiez d’abord quel module a ajouté l’override, et faites une copie du fichier.
TellMyShop résoudra-t-il tout seul le conflit d’overrides ?
Avec TellMyShop Pro, le chat lit les deux overrides, désigne la méthode en conflit et prépare un fichier fusionné dans un aperçu. L’enregistrement d’un fichier dans le dossier override exige d’activer l’interrupteur Maintenance pour 3 heures, et une copie du fichier est faite avant l’enregistrement. La décision sur la façon de fusionner le code de deux modules reste de préférence celle d’un développeur ou de l’auteur du module.
PrestaShop est une marque déposée de PrestaShop SA. Claude est une marque d’Anthropic PBC. ChatGPT et OpenAI sont des marques d’OpenAI. TellMyShop n’est pas affilié à ces entreprises.