Erreur 500 PrestaShop : comment la corriger, en façade ou au back-office

Mis à jour le Durée : 45 minutes

Réponse courte

Sur PrestaShop, une erreur 500 vient presque toujours d’un module, d’une surcharge, d’un cache corrompu, d’une version de PHP incompatible ou d’une mémoire insuffisante. Après une sauvegarde, activez le mode debug, lisez les journaux, videz var/cache/, puis désactivez les modules et les surcharges un à un jusqu’à retrouver la boutique.

Une erreur 500 est une réponse générique : le serveur signale un échec interne sans en donner la raison. Sur PrestaShop, elle surgit le plus souvent juste après une mise à jour de la boutique, l’installation ou la mise à jour d’un module, un changement de version de PHP chez l’hébergeur ou une modification de thème. Elle peut toucher toute la boutique, seulement le back-office, ou une seule page.

Ce guide s’adresse au propriétaire de la boutique, qui a accès à l’hébergement. Pour la définition générale du code et le cas du visiteur, lisez d’abord le guide sur l’erreur 500. Les chemins ci-dessous valent pour PrestaShop 1.7 et 8 ; les libellés de menu varient d’une version à l’autre.

Sauvegarder les fichiers et la base de données

Avant toute manipulation, copiez l’ensemble des fichiers de la boutique et exportez la base de données. Votre hébergeur propose en général une sauvegarde dans son espace client, et un outil comme phpMyAdmin permet d’exporter la base. Conservez ces copies hors du serveur. Si l’une de vos manipulations aggrave la situation, vous pourrez revenir à l’état de départ.

Activer le mode debug pour voir l’erreur réelle

Le mode debug remplace la page 500 par le message d’erreur PHP. Deux façons de l’activer :

  • Dans le back-office, si vous y accédez encore : Paramètres avancés > Performances, puis l’option de mode debug (son emplacement et son libellé changent selon la version).
  • Sinon, par FTP, ouvrez config/defines.inc.php et passez la constante _PS_MODE_DEV_ à true.

Rechargez la page fautive : le message nomme généralement un fichier, souvent situé dans modules/ ou override/. Notez-le. Une fois le problème réglé, remettez _PS_MODE_DEV_ à false : en production, afficher les erreurs expose des informations sur votre installation.

Lire les journaux d’erreurs

Le message affiché ne dit pas toujours tout. Consultez les fichiers du dossier var/logs/ (PrestaShop 1.7 et 8), classés par date : ouvrez le plus récent. Consultez aussi le journal PHP de l’hébergeur, appelé « Journaux », « Logs » ou error_log selon l’interface (sous cPanel, la rubrique « Erreurs »). Repérez la ligne apparue au moment de la panne, avec le fichier, le numéro de ligne et le type d’erreur : « Allowed memory size exhausted », « Class not found », « Call to undefined function », « Unsupported operand types ».

Vider le cache en supprimant le contenu de var/cache

Un cache corrompu après une mise à jour provoque des erreurs 500 tenaces. Par FTP ou par le gestionnaire de fichiers, supprimez le contenu du dossier var/cache/ (les sous-dossiers dev et prod, et ce qu’ils contiennent), mais jamais le dossier var/ entier, qui contient aussi les journaux et d’autres éléments utiles. PrestaShop reconstruit le cache à la visite suivante, ce qui peut ralentir un instant la première page. Si vous accédez au back-office, Paramètres avancés > Performances propose aussi un bouton pour vider le cache.

Désactiver un module fautif en renommant son dossier

Si le journal cite un fichier de modules/, ou si l’erreur est apparue juste après l’installation d’un module, ce module est le premier suspect. Dans modules/, renommez son dossier, par exemple monmodule en monmodule_off : PrestaShop ne le charge plus, et la boutique repart souvent aussitôt. Si vous ignorez lequel est en cause, renommez d’abord le dernier module installé ou mis à jour, rechargez, puis procédez ainsi un par un. Une fois la boutique rétablie, cherchez une mise à jour du module compatible avec votre version, ou contactez son éditeur avec le message du journal.

Désactiver les surcharges

Une surcharge est un fichier de override/ qui remplace une classe du cœur. Après une mise à jour de PrestaShop, une surcharge ancienne devient incompatible et fait tomber toute la boutique. Dans Paramètres avancés > Performances, une option nommée « Désactiver toutes les surcharges » permet de les écarter d’un coup sans rien supprimer. Si le back-office est inaccessible, déplacez les fichiers de override/classes/ et override/controllers/ hors de la boutique, après les avoir copiés. Videz ensuite var/cache/, car PrestaShop garde un index des classes surchargées. Si la boutique revient, la surcharge est en cause : demandez au développeur qui l’a écrite de l’adapter.

Vérifier la version de PHP et la mémoire

Chaque version de PrestaShop fonctionne avec une plage de versions de PHP précise, indiquée dans la documentation officielle. Une boutique ancienne sur un PHP trop récent, ou l’inverse, produit des erreurs 500 dès qu’un fichier utilise une fonction retirée. Dans l’espace client de l’hébergeur, repérez la version de PHP du site et comparez-la aux prérequis de votre version de PrestaShop. Si l’hébergeur a changé la version récemment, revenez à la précédente pour tester.

Vérifiez aussi memory_limit, la mémoire allouée à PHP. Une boutique avec beaucoup de produits et de modules a besoin d’une valeur confortable ; l’hébergeur permet en général de la relever dans les réglages PHP de l’espace client, ou dans un fichier php.ini ou .user.ini selon l’offre.

Régénérer le fichier .htaccess

Une règle de réécriture invalide dans .htaccess à la racine suffit à provoquer une erreur 500, notamment après un changement d’hébergement ou de nom de domaine. Par FTP, renommez-le en .htaccess_old et rechargez la boutique. Si le back-office répond, régénérez le fichier depuis le menu Préférences > Trafic & SEO (le libellé de ce menu et de la section dépend de la version), en enregistrant la configuration des URL : PrestaShop réécrit un .htaccess propre.

Questions fréquentes

Pourquoi le back-office PrestaShop affiche-t-il une erreur 500 alors que la boutique s’affiche ?

Le back-office charge des contrôleurs, des modules et des classes que la façade n’utilise pas. Un module d’administration défectueux, un cache de l’administration corrompu ou une surcharge de contrôleur peuvent donc faire tomber l’un sans toucher l’autre. Activez le mode debug via config/defines.inc.php et lisez var/logs/ : le message désigne le fichier à désactiver.

Que faire si l’erreur 500 apparaît juste après une mise à jour de PrestaShop ?

Dans la plupart des cas, un module ou une surcharge n’est plus compatible avec la nouvelle version. Videz var/cache/, désactivez les surcharges, puis renommez les modules tiers récents. Si rien ne change, vérifiez que la version de PHP reste dans la plage acceptée. En dernier recours, restaurez la sauvegarde faite avant la mise à jour et reprenez-la sur une copie de test.

Peut-on supprimer tout le dossier var pour vider le cache ?

Non. Seul le contenu de var/cache/ doit être supprimé. Le dossier var/ contient aussi les journaux et d’autres fichiers que PrestaShop attend à leur place. Si vous le supprimez en entier, vous perdez les traces de l’erreur à analyser et vous risquez d’en créer une autre. Videz le sous-dossier, rien de plus.

Une erreur 500 sur PrestaShop peut-elle venir d’un piratage ?

C’est possible, mais rare : un fichier PHP malveillant déposé dans la boutique peut provoquer des erreurs. Soupçonnez-le si le journal cite un fichier inconnu, si des fichiers ont été modifiés sans raison ou si la boutique redirige les visiteurs. Dans ce cas, ne vous contentez pas de réparer l’affichage : consultez le guide pour nettoyer un site infecté.

Que dire à son hébergeur quand l’erreur 500 persiste ?

Transmettez-lui l’heure exacte de la panne, l’adresse de la page, la version de PrestaShop, la version de PHP choisie et la ligne du journal d’erreurs. Demandez-lui de vérifier memory_limit, les limites de processus et les erreurs côté serveur. Si la cause reste introuvable, notre dépannage PrestaShop prend le relais à distance.

Sources

Voir aussi

Nos garanties

Comment se passe l’intervention