[PrestaShop 1.7] Résolu : Cannot redeclare class ContainerAwareInterface

PrestaShop
  • Accueil
  • Blog
  • [PrestaShop 1.7] Résolu : Cannot redeclare class ContainerAwareInterface

Corriger une erreur 500 sous PrestaShop n’est pas forcément simple et cela peut prendre plusieurs heures si on ne sait pas où chercher. Je vous livre aujourd’hui le tuto pour corriger pour une erreur 500 sous PrestaShop 1.7.

 

Constat

 
Votre boutique PrestaShop 1.7 est installé et tout tourne sans problème. Vous effectuez une modification anecdotique dans le back office et soudain, plus rien ne marche. Erreur 500 : la fameuse page blanche !
Selon la configuration, l’écran blanc affiche les erreurs mais parfois non et dans ce cas vous allez devoir les afficher pour apporter la correction.

erreur 500 prestashop 1.7 class
Voilà à quoi ressemble une erreur 500 sous Google Chrome, avec ça on est bien avancé pour la correction !

 

Afficher les erreurs avec PrestaShop 1.7

Comme pour les versions précédentes de PrestaShop, vous pouvez activer le mode debug pour afficher les éventuelles erreurs ou notice ou warning.
Pour ce faire, éditez le fichier /www/config/defines.inc.php et remplacez le code suivant :

/* Debug only */
if (!defined('_PS_MODE_DEV_')) {
define('_PS_MODE_DEV_', false);
}

Par :
/* Debug only */
if (!defined('_PS_MODE_DEV_')) {
define('_PS_MODE_DEV_', true);
}

On a passé la variable _PS_MODE_DEV_ à “true” donc “vrai” activer le debug. Enregistrez et rechargez votre page web.
Vous devriez alors à l’écran la ou les erreurs affichée(s). Si ce n’est pas le cas comme dans mon cas, rapprochez-vous de votre hébergeur et demandez les erreurs dans à la date et l’heure  où vous avez testé.
Voici l’erreur générée dans PrestaShop 1.7 :
Error :
[Fri Oct 27 09:12:21 2017] [warn] [client 90.112.95.90] mod_fcgid: stderr: PHP Fatal error:  Cannot redeclare class Symfony\Component\DependencyInjection\ContainerAwareInterface in /www/app/cache/prod/classes.php on line 6911

Comment corriger la fatal error sous PrestaShop 1.7 ?

Une fois que vous en êtes à cette étape, c’est plutôt simple car on sait d’où provient le problème : dans le fichier : /www/app/cache/prod/classes.php on line 6911
Dans ce cas précis, il n’est pas possible de déclarer plusieurs fois la même Class dans PrestaShop donc le système plante. Sauf que là, l’erreur est située dans un fichier lui-même situé dans le dossier /cache/ : c’est un fichier de cache.
Pour corriger l’erreur PHP Fatal error:  Cannot redeclare class, supprimez le fichier : /www/app/cache/prod/classes.php
Une fois le fichier classes.php supprimé, rechargez votre page web, c’est tout 🙂
Pensez également de désactiver le mode debug en passant à “false” la variable _PS_MODE_DEV_ dans le fichier /www/config/defines.inc.php
 
 

Bilan : PrestaShop 1.7 et les erreurs fatales

Corriger une erreur fatale sous PrestaShop 1.7 peut donc prendre quelques minutes quand on sait où chercher mais parfois cela peut prendre plusieurs heures si l’intervention est plus complexe. Quoiqu’il arrive, l’important est d’arriver à trouver la source du problème pour corriger soi-même ou pour donner les informations au développeur qui va intervenir.
A bientôt
 

Si vous n’avez pas le temps ou les compétences pour appliquer ce tuto à votre boutique PrestaShop, je peux m’en charger !

Contactez-moi

3 commentaires sur “[PrestaShop 1.7] Résolu : Cannot redeclare class ContainerAwareInterface

  1. Fatal error: Class ShopCore contains 3 abstract methods and must therefore be declared abstract or implement the remaining methods (PrestaShop\PrestaShop\Core\Foundation\Database\EntityInterface::getRepositoryClassName, PrestaShop\PrestaShop\Core\Foundation\Database\EntityInterface::save, PrestaShop\PrestaShop\Core\Foundation\Database\EntityInterface::hydrate) in /home2/takacimc/public_html/classes/shop/Shop.php on line 32

  2. Hello,
    Avec Prestashop 1.7, parfois il m’arrive de faire ceci, je renomme “www/app/cache/prod/” en “www/app/cache/prodOLD” ou www/app/cache/dev/ en “www/app/cache/devOLD”. Ensuite, il recrée automatiquement le dossier de cache avec des fichiers propres. Moi aussi j’ai parfois tourné en rond à chercher le problème, alors que c’était dans le cache. Dans cette version 1.7 sur certaines erreurs ce n’est pas toujours clair l’origine du soucis.
    A bientôt et merci pour le billet !

    1. Hello Germain,
      On peut en effet, soit supprimer soit renommer les dossiers /www/app/cache/prod et /www/app/cache/dev
      ++

Laisser un avis

Consultez les autres articles