Erreur 500 sur PrestaShop : les cinq causes réelles
Votre boutique PrestaShop renvoie une erreur 500. Les cinq causes réelles, comment les distinguer en minutes, et laquelle vérifier en premier.
Une erreur 500 sur une boutique, ce n'est pas un message d'erreur : c'est un aveu d'impuissance du serveur, qui dit avoir échoué sans dire pourquoi. La cause réelle est toujours écrite quelque part, et rarement à l'endroit où on la cherche.
D'abord : à quel niveau ça casse
Une erreur 500 peut venir de trois étages, et les distinguer fait gagner l'essentiel du temps.
| Ce que vous observez | Étage responsable |
|---|---|
| Le 500 est une page Apache sobre, sans style | Apache, avant PHP. Regardez .htaccess |
| Le 500 est une page PrestaShop stylée | PHP, la boutique a démarré |
| Page blanche plutôt qu'un 500 | PHP a échoué, avec l'affichage des erreurs désactivé |
Cette lecture de trente secondes élimine déjà les deux tiers des pistes.

Et voici ce que le journal du serveur disait au même instant :
[core:alert] [client 172.20.0.1] /var/www/html/.htaccess:
Invalid command 'DirectiveQuiNexistePasChezApache',
perhaps misspelled or defined by a module not included
La directive fautive est nommée. Dans le même temps, var/logs/ de PrestaShop était vide : c'est cohérent, PHP n'a jamais été atteint. Un journal applicatif vide sur une erreur 500 est donc une information, pas une absence d'information.
Cause 1 : une surcharge orpheline
La plus fréquente, de loin. Un module installe des fichiers dans override/, puis il est désinstallé, mal désinstallé, ou mis à jour de travers. Les surcharges restent, et l'index de classes de PrestaShop continue de les désigner alors qu'elles référencent du code disparu.
Le test est rapide et réversible : renommez override/ en override-hs/, créez un override/ vide, videz var/cache/. Si la boutique revient, vous tenez la cause.
Ne vous arrêtez pas là : remettez les surcharges une par une pour identifier laquelle casse, plutôt que de laisser le dossier vide. Certaines portent des fonctionnalités que vous utilisez.
Cause 2 : un décalage de version PHP
Un hébergeur qui passe le serveur en PHP 8.3 alors que la boutique tourne en 1.7.6 produit une erreur 500 immédiate, sans qu'aucune modification n'ait été faite sur le site. C'est la panne « je n'ai rien touché » par excellence, et elle est authentique.
Vérifiez la version PHP active dans le panneau de l'hébergeur, et comparez-la à celle que votre version de PrestaShop supporte. Redescendre d'un cran remet la boutique en ligne le temps de préparer une vraie mise à jour.
Cause 3 : le .htaccess
PrestaShop régénère ce fichier quand on modifie les réglages d'URL simplifiées. Si la régénération se fait mal, ou si le fichier contient une directive que le serveur ne connaît pas, Apache refuse toutes les requêtes.
Signe distinctif : la page d'erreur est celle d'Apache, sans mise en forme, et le journal du serveur porte une ligne Invalid command. Renommez le fichier, rechargez : si la boutique répond, c'était lui. Vous le régénérerez ensuite depuis Paramètres de la boutique puis Trafic et SEO.
Cause 4 : la mémoire PHP
Une boutique volumineuse, un catalogue important, ou une opération lourde comme la régénération des miniatures, et la limite de mémoire est atteinte. Le journal du serveur porte alors une ligne explicite, Allowed memory size of ... bytes exhausted.
C'est la seule cause qui se règle sans rien comprendre au code : augmenter memory_limit. Mais si la limite était suffisante hier, demandez-vous ce qui a grossi.
Cause 5 : un module fraîchement installé
Si l'erreur suit immédiatement une installation, c'est le module, sans autre hypothèse à envisager. Renommez son dossier dans modules/, videz var/cache/.
Attention : un module peut aussi avoir posé une surcharge, donc renommer son dossier ne suffit pas toujours. Il faut regarder override/ en parallèle. C'est la combinaison des deux qui remet la boutique debout.
L'ordre à suivre
- Activez le mode debug dans
config/defines.inc.php, l'erreur devient lisible. - Videz
var/cache/, avant toute autre chose. - Lisez
var/logs/et le journal du serveur. - Testez
override/renommé. - Vérifiez la version PHP.
- Testez
.htaccessrenommé.
Ne sautez pas l'étape 2. Sur PrestaShop, un cache périmé fait échouer des corrections parfaitement valides, et c'est ce qui donne l'impression que le problème est insoluble.
Une boutique arrêtée le week-end, c'est le chiffre d'affaires du week-end. Je traite ces urgences sous une heure, y compris samedi et dimanche, sans majoration.
Toujours bloqué ?
Décrivez-moi la panne, j'analyse et je vous dis exactement ce qui ne va pas, sans engagement.
Demander mon diagnostic gratuit →