[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"alexandrecarette-hero-data":22,"megamenu-contexts-ac-hub":29,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":31,"$fuOCYU0RmSmwzwi0LpO6AGO_ekdd5k7ONm9eT2lheT2g":109,"megamenu":114,"footer-db":174,"header-db":194,"$fZJRZGS0HaCPL78WkJFqDP9AY1zkzg6rJ1A403XIOiVo":206,"$fKPG4G7AVfsgdbfX2rdWdGpLECFXWDzd5Qcd_abatfyE":209,"i18n-alternates-_root-fr":25,"$fgfw-LFB2fgxpBgl6_2EAdft2rVsnK6viV_fXHKKiEXk":224,"$f3-IakGV9RTSvK4t8OeJ9ZtxKWU59d9NXAhhpoHP4gW8":228,"$fWGprGtSDRwGqj4N0X-FeTstA1XPEwG2JaGHzsdBR5yg":277,"$ftCgiCQ1Qyz6eieo83he29D_FsSw74NeCmklcXAHGAsA":278},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"capa":23,"malt":26,"legal":27,"links":28},{"state":24,"trimester":25,"missionsOpen":25,"missionsMax":25,"nextTrimester":25},"fallback",null,{"url":25,"rating":25,"reviewsCount":25},{"siret":25,"status":25,"city":25},{"linkedin":25,"github":25},{"contexts":30},[],{"columns":32},[33,50,77,96],{"title":34,"position":35,"links":36},"Plateforme",1,[37,41,44,47],{"label":38,"href":39,"external":40},"Tarifs","\u002Ftarifs",false,{"label":42,"href":43,"external":40},"Devenir Ambassadeur","\u002Fambassadeur",{"label":45,"href":46,"external":40},"Méthode","\u002Fmodules",{"label":48,"href":49,"external":20},"CodeMyShop (open-source)","https:\u002F\u002Fcodemyshop.com",{"title":51,"position":52,"links":53},"Le Synedre",2,[54,57,60,63,66,69,71,74],{"label":55,"href":56,"external":40},"L'histoire","\u002Fsynedre",{"label":58,"href":59,"external":20},"Constitution","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconstitution",{"label":61,"href":62,"external":20},"L'équipe","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fagents",{"label":64,"href":65,"external":40},"Le réacteur en direct","\u002Freacteur",{"label":67,"href":68,"external":20},"Le Drill (entraînement)","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fdrill",{"label":70,"href":62,"external":20},"Les agents IA",{"label":72,"href":73,"external":20},"La Conduite","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconduite",{"label":75,"href":76,"external":20},"Charte plateforme","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fcharte",{"title":78,"position":79,"links":80},"Ressources",3,[81,84,87,90,93],{"label":82,"href":83,"external":40},"Blog","\u002Fblog",{"label":85,"href":86,"external":40},"Academy","\u002Facademy",{"label":88,"href":89,"external":40},"Expertise PrestaShop","\u002Fexpertise",{"label":91,"href":92,"external":40},"Flywheel","\u002Fflywheel",{"label":94,"href":95,"external":40},"Manifeste","\u002Fmanifeste",{"title":97,"position":98,"links":99},"À propos",4,[100,103,106],{"label":101,"href":102,"external":40},"Alexandre Carette","\u002Fa-propos",{"label":104,"href":105,"external":20},"Dossier de presse","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fpresse",{"label":107,"href":108,"external":40},"Contact","\u002Fcontact",{"tree_loaded":20,"found":40,"kind":110,"id":25,"path":111,"path_fr":111,"pilier_slug":111,"pilier_slug_fr":111,"slug":111,"name":111,"description":111,"meta_title":111,"meta_description":111,"breadcrumb":112,"children":113},"category","",[],[],{"items":115},[116,125,130,135,142,149,156,162,168],{"id":117,"type":118,"label":119,"href":89,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":122,"barVisible":20,"children":123,"psChildren":124},41,"link",{"fr":120},"Expertise","picto",0,[],[],{"id":126,"type":118,"label":127,"href":83,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":35,"barVisible":20,"children":128,"psChildren":129},42,{"fr":82},[],[],{"id":131,"type":118,"label":132,"href":46,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":52,"barVisible":20,"children":133,"psChildren":134},43,{"fr":45},[],[],{"id":136,"type":118,"label":137,"href":139,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":79,"barVisible":20,"children":140,"psChildren":141},49,{"fr":138},"Modules gratuits","\u002Fmodules-libres",[],[],{"id":143,"type":118,"label":144,"href":146,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":98,"barVisible":20,"children":147,"psChildren":148},44,{"fr":145},"Outils IA","\u002Foutils-ia",[],[],{"id":150,"type":118,"label":151,"href":39,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":152,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":153,"barVisible":20,"children":154,"psChildren":155},45,{"fr":38},{"highlight":20},5,[],[],{"id":157,"type":118,"label":158,"href":86,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":159,"barVisible":20,"children":160,"psChildren":161},46,{"fr":85},6,[],[],{"id":163,"type":118,"label":164,"href":102,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":165,"barVisible":20,"children":166,"psChildren":167},47,{"fr":97},7,[],[],{"id":169,"type":118,"label":170,"href":108,"icon":25,"iconRole":121,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":40,"position":171,"barVisible":20,"children":172,"psChildren":173},48,{"fr":107},8,[],[],{"footer":175},{"theme":176,"description":25,"hours":25,"logo":177,"contact":180,"social":181,"bottomBar":191,"newsletter":192},"dark",{"src":178,"href":179,"alt":101},"\u002Flogo-ac.svg","\u002F",{"email":25,"phone":25,"address":25,"cta":25},[182,185,188],{"platform":183,"href":184,"label":183},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":186,"href":187,"label":186},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":189,"href":190,"label":189},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":25},{"show":40,"title":25,"description":25,"placeholder":25,"ctaLabel":25,"consentText":193},"J'accepte de recevoir par e-mail les actualités de CodeMyShop et d'Alexandre Carette : nouveaux modules libres, astuces PrestaShop, SEO et performance. Je peux me désinscrire à tout moment grâce au lien présent dans chaque message.",{"header":195},{"logo":196,"topBar":199,"contactEmail":202,"contactPhone":25,"features":203,"navBar":25,"headerLinks":205,"storesHref":25},{"src":178,"alt":197,"text":101,"href":179,"class":198},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":25,"messageMobile":25,"showLanguages":40,"align":200,"languages":201},"left",[],"contact@alexandrecarette.fr",{"showSearch":40,"showWishlist":40,"showLogin":20,"showContact":40,"showCart":40,"showQuoteButton":20,"showBlogLink":40,"showContactLink":40,"showGiftcardLink":40,"showStoresLink":40,"stickyHeader":20,"staticHeader":40,"headerLayout":204},"inline",{},{"ok":20,"alternates":207},{"fr":208},"\u002Fblog\u002Fprestashop\u002Fperformance\u002Fpage-blanche-prestashop-diagnostiquer-corriger-erreur-500",{"tree_loaded":20,"found":20,"kind":110,"id":210,"path":211,"path_fr":211,"pilier_slug":212,"pilier_slug_fr":212,"slug":213,"name":214,"description":215,"meta_title":216,"meta_description":217,"breadcrumb":218,"children":223},569,"prestashop\u002Fperformance","prestashop","performance","Performance","Optimisation et scalabilité PrestaShop.","Performance PrestaShop — Blog Alexandre Carette","Performance PrestaShop : cache, Smarty, ObjectModel, monitoring.",[219,222],{"id":220,"slug":212,"path":212,"label":221},556,"PrestaShop",{"id":210,"slug":213,"path":211,"label":214},[],{"academy":225,"blog":226,"expertise":227},[],[],[],{"id":229,"canonicalInnerPath":230,"indexable":20,"title":231,"h1":232,"category":212,"categoryName":214,"pillarName":221,"subcategory":213,"slug":233,"coverImage":234,"thumbnailImage":234,"content":235,"visuels":236,"faq":237,"metaDescription":262,"active":20,"datePublished":263,"dateUpdated":263,"readingTime":264,"mentor":25,"alternates":265,"langsWithContent":266,"audioEnabled":40,"audioUrl":111,"author":268},120,"prestashop\u002Fperformance\u002Fpage-blanche-prestashop-diagnostiquer-corriger-erreur-500","PrestaShop page blanche : corriger l'erreur 500","PrestaShop page blanche : diagnostiquer et corriger les erreurs 500 sans paniquer","performance--page-blanche-prestashop-diagnostiquer-corriger-erreur-500","\u002Fblog-covers\u002Fb81d9e1317f3.webp","\u003Ch2>Comprendre l'origine d'un écran blanc ou d'une erreur 500 sur PrestaShop\u003C\u002Fh2>\n\u003Cp>L'affichage d'un écran blanc, couramment qualifié de White Screen of Death (WSOD), ou le renvoi d'un code d'état HTTP 500 Internal Server Error constitue la manifestation la plus abrupte d'une interruption d'exécution sur votre boutique e-commerce. Pour les développeurs et les entrepreneurs qui gèrent leurs propres systèmes, ce comportement ne doit jamais être perçu comme une fatalité imprévisible, mais comme un mécanisme de protection strict du moteur d'exécution PHP. Par défaut, sur un serveur de production, la directive PHP \u003Ccode>display_errors\u003C\u002Fcode> est configurée sur \u003Ccode>Off\u003C\u002Fcode> afin de ne pas divulguer publiquement la structure de vos fichiers, vos identifiants de base de données ou des secrets d'environnement. Lorsque l'interpréteur rencontre une condition bloquante non interceptée, il interrompt immédiatement le script et renvoie un corps de réponse vide ou une page générique d'erreur serveur.\u003C\u002Fp>\n\n\u003Cp>Dans l'écosystème PrestaShop moderne (versions 1.7 et 8 reposant sur les composants du framework Symfony), plusieurs causes techniques sous-jacentes déclenchent cette rupture d'exécution :\u003C\u002Fp>\n\u003Cul>\n    \u003Cli>\u003Cstrong>Erreur fatale PHP (Fatal Error) :\u003C\u002Fstrong> Tentative d'instanciation d'une classe introuvable, appel à une fonction inexistante ou non-respect des types stricts à la suite d'une mise à jour de PHP ou d'un module tiers.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Dépassement de la mémoire allouée (Memory Limit Exhaustion) :\u003C\u002Fstrong> Épuisement de la directive \u003Ccode>memory_limit\u003C\u002Fcode> de PHP lors de la génération d'un catalogue volumineux, de la compilation des templates Smarty ou de l'exécution d'un script d'import lourd.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Corruption du conteneur de dépendances ou du cache Symfony :\u003C\u002Fstrong> Présence de métadonnées périmées ou de fichiers de compilation incomplets dans l'arborescence \u003Ccode>var\u002Fcache\u002F\u003C\u002Fcode>.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Conflit de surcharge de classe (Override) :\u003C\u002Fstrong> Présence d'un fichier altéré dans le répertoire \u003Ccode>override\u002F\u003C\u002Fcode> dont la signature de méthode diffère de la classe parente du cœur de PrestaShop.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Rupture de connexion à la base de données :\u003C\u002Fstrong> Saturation du pool de connexions MariaDB ou MySQL, verrous de tables ou identifiants incorrects dans le fichier d'environnement.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Pour intervenir efficacement sans détériorer l'état du serveur ni compromettre vos transactions, il est impératif d'adopter une démarche rationnelle : inspecter avant d'agir, isoler la cause exacte à l'aide des journaux système, puis corriger avec une précision chirurgicale.\u003C\u002Fp>\n\n\u003Ch2>Activer le mode debug dans defines.inc.php avec précaution\u003C\u002Fh2>\n\u003Cp>La première étape diagnostique consiste à contraindre PrestaShop à rendre explicites les messages d'erreur masqués. Lorsque le back-office est inaccessible, cette manipulation s'exécute directement sur le système de fichiers, via un accès SSH ou un client SFTP sécurisé. Le réglage central se situe dans le fichier \u003Ccode>config\u002Fdefines.inc.php\u003C\u002Fcode>, à la racine de votre boutique.\u003C\u002Fp>\n\n\u003Cp>Par défaut, la constante \u003Ccode>_PS_MODE_DEV_\u003C\u002Fcode> est initialisée à \u003Ccode>false\u003C\u002Fcode>. La basculer à \u003Ccode>true\u003C\u002Fcode> active l'affichage immédiat des erreurs PHP, des avertissements (warnings), des notices, ainsi que de la barre d'outils de profilage Symfony (Debug Toolbar) sur PrestaShop 1.7 et PrestaShop 8. Consulter la \u003Ca href=\"https:\u002F\u002Fdevdocs.prestashop-project.org\u002F8\u002Fbasics\u002Fkeeping-up-to-date\u002Fdebug-mode\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">documentation officielle du mode debug PrestaShop\u003C\u002Fa> permet de mesurer l'impact de ce réglage sur l'environnement d'exécution.\u003C\u002Fp>\n\n\u003Cp>Cependant, activer ce mode de manière globale sur une boutique ouverte au public présente un risque d'exposition d'informations sensibles (chemins absolus du serveur, traces d'appels SQL, versions exactes des paquets). Pour sécuriser votre diagnostic, conditionnez l'activation du mode debug à votre propre adresse IP publique, comme illustré dans l'extrait suivant :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>\u002F* config\u002Fdefines.inc.php *\u002F\n\u002F\u002F Remplacement du bloc standard par une condition stricte sur votre IP\n$allowed_ips = ['198.51.100.42']; \u002F\u002F Remplacez par votre IP publique fixe\n\nif (isset($_SERVER['REMOTE_ADDR']) && in_array($_SERVER['REMOTE_ADDR'], $allowed_ips, true)) {\n    define('_PS_MODE_DEV_', true);\n} else {\n    define('_PS_MODE_DEV_', false);\n}\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Si vous intervenez au sein d'une \u003Ca href=\"\u002Fblog\u002Fdevops\u002Fdocker\u002Fdocker-compose-prestashop-production\">configuration Docker Compose pour PrestaShop\u003C\u002Fa>, vous pouvez également injecter cette variable d'environnement ou monter temporairement un fichier de configuration dédié afin d'éviter toute altération persistante sur le volume de production.\u003C\u002Fp>\n\n\u003Ch2>Analyser méthodiquement les logs d'erreurs : Nginx, Apache et PHP-FPM\u003C\u002Fh2>\n\u003Cp>L'activation du mode debug ne résout pas l'incident ; elle rend simplement visible l'exception levée. Si l'écran demeure blanc malgré la modification du fichier \u003Ccode>defines.inc.php\u003C\u002Fcode> (cas typique d'une erreur de syntaxe PHP ou d'une panne précoce survenue avant le chargement du noyau PrestaShop), la vérité se trouve nécessairement dans les journaux d'erreurs du système d'exploitation et des démons web.\u003C\u002Fp>\n\n\u003Cp>Sur un serveur Linux configuré avec Nginx et PHP-FPM, deux fichiers de logs distincts doivent être scrutés en priorité via votre terminal :\u003C\u002Fp>\n\u003Col>\n    \u003Cli>\u003Cstrong>Le journal des erreurs de PHP-FPM :\u003C\u002Fstrong> Selon votre distribution et la version de PHP installée, il se trouve généralement sous \u003Ccode>\u002Fvar\u002Flog\u002Fphp8.1-fpm.log\u003C\u002Fcode> ou au sein du dossier du pool applicatif \u003Ccode>\u002Fvar\u002Flog\u002Fphp-fpm\u002Fwww-error.log\u003C\u002Fcode>. Il consigne les dépassements de mémoire (\u003Ccode>Allowed memory size exhausted\u003C\u002Fcode>), les timeouts de processus (\u003Ccode>execution timed out\u003C\u002Fcode>) et les plantages au niveau du binaire.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Le journal des erreurs du serveur web (Nginx ou Apache) :\u003C\u002Fstrong> Accessible sous \u003Ccode>\u002Fvar\u002Flog\u002Fnginx\u002Ferror.log\u003C\u002Fcode> ou \u003Ccode>\u002Fvar\u002Flog\u002Fapache2\u002Ferror.log\u003C\u002Fcode>. Si Nginx renvoie un code 502 Bad Gateway ou 504 Gateway Timeout plutôt qu'une 500 pure, la cause provient directement de la communication avec le socket Unix ou le port TCP de PHP-FPM.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Les logs de l'application PrestaShop \u002F Symfony :\u003C\u002Fstrong> Situés dans \u003Ccode>var\u002Flogs\u002F\u003C\u002Fcode> (sur PrestaShop 1.7 et 8) ou dans \u003Ccode>app\u002Flogs\u002F\u003C\u002Fcode>. Le fichier \u003Ccode>prod.log\u003C\u002Fcode> ou \u003Ccode>dev.log\u003C\u002Fcode> détaille la trace d'appels complète (stack trace) des exceptions non capturées par le routeur Symfony.\u003C\u002Fli>\n\u003C\u002Fol>\n\n\u003Cp>Pour surveiller les écritures en temps réel pendant que vous reproduisez le problème sur votre navigateur, utilisez la commande suivante :\u003C\u002Fp>\n\u003Cpre>\u003Ccode>tail -n 100 -f \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log \u002Fvar\u002Flog\u002Fphp8.1-fpm.log\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Le tableau ci-dessous récapitule les signatures d'erreurs les plus fréquentes rencontrées sur les boutiques PrestaShop en production, leur interprétation technique et l'action corrective appropriée :\u003C\u002Fp>\n\n\u003Ctable>\n    \u003Cthead>\n        \u003Ctr>\n            \u003Cth>Message d'erreur relevé\u003C\u002Fth>\n            \u003Cth>Fichier journal concerné\u003C\u002Fth>\n            \u003Cth>Origine technique\u003C\u002Fth>\n            \u003Cth>Action corrective immédiate\u003C\u002Fth>\n        \u003C\u002Ftr>\n    \u003C\u002Fthead>\n    \u003Ctbody>\n        \u003Ctr>\n            \u003Ctd>\u003Ccode>Fatal error: Allowed memory size of X bytes exhausted\u003C\u002Fcode>\u003C\u002Ftd>\n            \u003Ctd>PHP-FPM error.log\u003C\u002Ftd>\n            \u003Ctd>Dépassement du plafond de mémoire allouée au script.\u003C\u002Ftd>\n            \u003Ctd>Augmenter temporairement \u003Ccode>memory_limit\u003C\u002Fcode> dans \u003Ccode>php.ini\u003C\u002Fcode> (ex: 512M ou 1G) et recharger le démon FPM.\u003C\u002Ftd>\n        \u003C\u002Ftr>\n        \u003Ctr>\n            \u003Ctd>\u003Ccode>Parse error: syntax error, unexpected ...\u003C\u002Fcode>\u003C\u002Ftd>\n            \u003Ctd>Nginx error.log \u002F PHP log\u003C\u002Ftd>\n            \u003Ctd>Incompatibilité de version PHP (ex: code PHP 8.1 exécuté sur PHP 7.4) ou fichier altéré lors d'un transfert SFTP.\u003C\u002Ftd>\n            \u003Ctd>Vérifier la version PHP active et remplacer le fichier corrompu par sa version saine issue du dépôt git.\u003C\u002Ftd>\n        \u003C\u002Ftr>\n        \u003Ctr>\n            \u003Ctd>\u003Ccode>Fatal error: Declaration of OverrideClass::method() must be compatible with CoreClass::method()\u003C\u002Fcode>\u003C\u002Ftd>\n            \u003Ctd>PHP log \u002F dev.log\u003C\u002Ftd>\n            \u003Ctd>Surcharge (override) obsolète non alignée avec le cœur mis à jour de PrestaShop.\u003C\u002Ftd>\n            \u003Ctd>Désactiver temporairement le fichier incriminé dans \u003Ccode>override\u002Fclasses\u002F\u003C\u002Fcode> ou \u003Ccode>override\u002Fcontrollers\u002F\u003C\u002Fcode> en le renommant.\u003C\u002Ftd>\n        \u003C\u002Ftr>\n        \u003Ctr>\n            \u003Ctd>\u003Ccode>An exception occurred while executing 'SELECT ... FROM ps_...'\u003C\u002Fcode>\u003C\u002Ftd>\n            \u003Ctd>var\u002Flogs\u002Fprod.log\u003C\u002Ftd>\n            \u003Ctd>Table MariaDB corrompue, colonne manquante après migration partielle ou droits insuffisants pour l'utilisateur SQL.\u003C\u002Ftd>\n            \u003Ctd>Exécuter une vérification\u002Fréparation SQL (\u003Ccode>CHECK TABLE\u003C\u002Fcode> \u002F \u003Ccode>REPAIR TABLE\u003C\u002Fcode>) et contrôler le schéma de la base.\u003C\u002Ftd>\n        \u003C\u002Ftr>\n        \u003Ctr>\n            \u003Ctd>\u003Ccode>FastCGI sent in stderr: \"Primary script unknown\"\u003C\u002Fcode>\u003C\u002Ftd>\n            \u003Ctd>Nginx error.log\u003C\u002Ftd>\n            \u003Ctd>Mauvaise directive \u003Ccode>root\u003C\u002Fcode> dans le vhost Nginx ou problème de permissions sur le fichier \u003Ccode>index.php\u003C\u002Fcode>.\u003C\u002Ftd>\n            \u003Ctd>Ajuster les chemins dans la configuration Nginx et s'assurer que l'utilisateur \u003Ccode>www-data\u003C\u002Fcode> peut lire le dossier.\u003C\u002Ftd>\n        \u003C\u002Ftr>\n    \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Ch2>Désactiver d'urgence un module défaillant en base de données ou via le terminal\u003C\u002Fh2>\n\u003Cp>Dans plus de 70 % des cas constatés lors d'interventions sur des boutiques en panne, l'origine de l'écran blanc réside dans un module tiers défectueux, particulièrement après l'application d'un correctif ou lors de l'accrochage à un hook critique (comme \u003Ccode>displayHeader\u003C\u002Fcode>, \u003Ccode>actionDispatcher\u003C\u002Fcode> ou \u003Ccode>displayPaymentReturn\u003C\u002Fcode>). Si l'erreur bloque l'accès au tableau de bord, vous ne pouvez pas utiliser l'interface graphique pour désinstaller ce module.\u003C\u002Fp>\n\n\u003Cp>Deux approches opérationnelles permettent de neutraliser immédiatement le composant perturbateur sans endommager les données de la boutique.\u003C\u002Fp>\n\n\u003Ch3>Méthode 1 : Désactivation ciblée dans la base de données relationnelle\u003C\u002Fh3>\n\u003Cp>Connectez-vous à votre serveur de base de données via le client CLI \u003Ccode>mysql\u003C\u002Fcode> ou un outil d'administration. La table \u003Ccode>ps_module\u003C\u002Fcode> (ou avec le préfixe configuré dans votre fichier \u003Ccode>parameters.php\u003C\u002Fcode>) répertorie l'ensemble des modules déclarés. Pour couper un module sans supprimer ses configurations métier, exécutez :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>-- 1. Identifier le statut actuel du module\nSELECT id_module, name, active FROM ps_module WHERE name = 'nom_du_module_defaillant';\n\n-- 2. Désactiver le module en urgence\nUPDATE ps_module SET active = 0 WHERE name = 'nom_du_module_defaillant';\n\n-- 3. Désactiver les liaisons aux hooks pour garantir qu'aucune méthode ne soit appelée\nUPDATE ps_hook_module hm\nJOIN ps_module m ON m.id_module = hm.id_module\nSET hm.id_shop = 0\nWHERE m.name = 'nom_du_module_defaillant';\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Ch3>Méthode 2 : Neutralisation par renommage physique du dossier\u003C\u002Fh3>\n\u003Cp>Si la base de données est difficilement accessible ou si le module s'exécute dès le chargement du chargeur automatique Composer (autoloading), connectez-vous en SSH et renommez directement le répertoire du module au sein de l'arborescence \u003Ccode>modules\u002F\u003C\u002Fcode> :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode>cd \u002Fvar\u002Fwww\u002Fhtml\u002Fmodules\u002F\nmv nom_du_module_defaillant nom_du_module_defaillant_disabled\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>PrestaShop ne trouvant plus le point d'entrée principal du module, il ignorera ses instructions lors du cycle d'initialisation, ce qui permettra à votre boutique de finaliser la génération du rendu HTML.\u003C\u002Fp>\n\n\u003Cblockquote>\n\u003Cp>Sur un incident en production, l'erreur la plus coûteuse consiste à relancer des actions aveugles : vider les caches au hasard, réinstaller des modules ou redémarrer des conteneurs sans avoir capturé la trace exacte du problème. Chaque erreur 500 laisse une signature explicite dans les journaux. L'artisan-ingénieur ne devine pas : il lit l'exception, isole la ligne incriminée et applique le correctif chirurgical minimal pour rétablir le service avant d'engager le refactoring de fond.\u003C\u002Fp>\n\u003Cfooter>— Alexandre Carette\u003C\u002Ffooter>\n\u003C\u002Fblockquote>\n\n\u003Ch2>Vider manuellement le cache et assainir les permissions du système de fichiers\u003C\u002Fh2>\n\u003Cp>PrestaShop s'appuie sur une double couche de cache : le compilateur de templates Smarty d'une part, et le conteneur de services Symfony d'autre part. Lors d'un incident ou d'une modification de code en urgence, le cache peut conserver des classes fantômes ou des fichiers compilés corrompus. Vider ce cache devient une condition préalable au retour à la normale.\u003C\u002Fp>\n\n\u003Cp>Sur PrestaShop 1.7 et PrestaShop 8, le cache applicatif réside dans le dossier \u003Ccode>var\u002Fcache\u002F\u003C\u002Fcode>. Sur les versions historiques PrestaShop 1.6, il se situe dans \u003Ccode>cache\u002Fsmarty\u002Fcompile\u002F\u003C\u002Fcode> et \u003Ccode>cache\u002Fsmarty\u002Fcache\u002F\u003C\u002Fcode>. Pour un \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fperformance\u002Fdocker-vps-deploy-production\">déploiement PrestaShop sur VPS\u003C\u002Fa>, l'intervention en ligne de commande reste la méthode la plus fiable :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode># Accéder à la racine du projet\ncd \u002Fvar\u002Fwww\u002Fhtml\n\n# Sur PrestaShop 1.7 et 8 : suppression sécurisée des dossiers de compilation Symfony\nrm -rf var\u002Fcache\u002Fprod\u002F* var\u002Fcache\u002Fdev\u002F*\n\n# Sur PrestaShop 1.6 : vidage du cache de compilation Smarty (conserver index.php)\nfind cache\u002Fsmarty\u002Fcompile\u002F -mindepth 1 -not -name \"index.php\" -delete\nfind cache\u002Fsmarty\u002Fcache\u002F -mindepth 1 -not -name \"index.php\" -delete\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Une fois le cache purgé, la reconstruction automatique des conteneurs s'effectue dès la première requête HTTP. Si l'utilisateur sous lequel tourne PHP-FPM (souvent \u003Ccode>www-data\u003C\u002Fcode> sous Debian\u002FUbuntu ou \u003Ccode>nginx\u003C\u002Fcode> sous Alpine) ne possède pas les droits en écriture sur ces répertoires, un nouvel écran blanc se produira immédiatement. Rétablissez les permissions de propriété et de droits comme suit :\u003C\u002Fp>\n\n\u003Cpre>\u003Ccode># Rétablir la propriété des fichiers vers l'utilisateur web\nchown -R www-data:www-data var\u002Fcache\u002F var\u002Flogs\u002F img\u002F mails\u002F modules\u002F translations\u002F upload\u002F download\u002F\n\n# Appliquer les permissions de sécurité standards : 755 pour les dossiers, 644 pour les fichiers\nfind var\u002Fcache\u002F -type d -exec chmod 755 {} +\nfind var\u002Fcache\u002F -type f -exec chmod 644 {} +\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Si votre infrastructure s'appuie sur une \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fdocker-headless-multi-conteneurs\">architecture multi-conteneurs pour PrestaShop\u003C\u002Fa>, veillez à exécuter ces purges à l'intérieur du conteneur applicatif PHP ou à travers les commandes fournies par la console Symfony intégrée :\u003C\u002Fp>\n\u003Cpre>\u003Ccode>php bin\u002Fconsole cache:clear --env=prod --no-warmup\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Ch2>Protocole de sortie de crise et pérennisation des systèmes\u003C\u002Fh2>\n\u003Cp>Le rétablissement de l'affichage de votre boutique et de votre back-office ne marque pas la fin de votre intervention. Une réparation sous contrainte laisse souvent des portes ouvertes ou des fragilités silencieuses qui risquent de provoquer de nouveaux incidents lors du prochain pic de fréquentation.\u003C\u002Fp>\n\n\u003Cp>Appliquez systématiquement la liste de contrôle suivante dès que le trafic reprend son cours normal :\u003C\u002Fp>\n\u003Cul>\n    \u003Cli>\u003Cstrong>Désactiver impérativement le mode debug :\u003C\u002Fstrong> Vérifiez que \u003Ccode>_PS_MODE_DEV_\u003C\u002Fcode> est repositionné sur \u003Ccode>false\u003C\u002Fcode> dans \u003Ccode>config\u002Fdefines.inc.php\u003C\u002Fcode> afin de protéger vos données sensibles et de restaurer les performances nominales du cache de production.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Assainir le registre des overrides :\u003C\u002Fstrong> Si une classe surchargée a provoqué l'incident, supprimez le fichier \u003Ccode>var\u002Fcache\u002Fprod\u002Fclass_index.php\u003C\u002Fcode> afin de forcer PrestaShop à réindexer uniquement les overrides valides, puis testez le comportement sur un environnement de recette isolé.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Ajuster les allocations de ressources système :\u003C\u002Fstrong> Vérifiez dans votre configuration \u003Ccode>php.ini\u003C\u002Fcode> que \u003Ccode>memory_limit\u003C\u002Fcode> (minimum recommandé : 512M) et \u003Ccode>max_execution_time\u003C\u002Fcode> (au moins 120 secondes pour les tâches d'arrière-plan) sont dimensionnés en adéquation avec la taille de votre catalogue.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Configurer une rotation stricte des journaux :\u003C\u002Fstrong> Assurez-vous que l'utilitaire \u003Ccode>logrotate\u003C\u002Fcode> est actif sur vos répertoires \u003Ccode>\u002Fvar\u002Flog\u002F\u003C\u002Fcode> pour éviter que la saturation de l'espace disque n'entraîne un blocage brutal de MariaDB ou de PHP.\u003C\u002Fli>\n    \u003Cli>\u003Cstrong>Consigner l'incident dans votre carnet de bord :\u003C\u002Fstrong> Enregistrez la date, le commit ou la manipulation à l'origine du bogue, ainsi que la méthode exacte employée pour le résoudre. Une équipe technique qui comprend ses défaillances passées élimine durablement les risques de régression.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Pour aller au-delà du dépannage réactif et sécuriser durablement votre écosystème e-commerce, il est essentiel de connaître avec exactitude les goulets d'étranglement de votre infrastructure. Vous pouvez demander votre Note de Mesure personnalisée : un diagnostic technique complet couvrant les performances Core Web Vitals, la conformité de votre SEO technique, ainsi que la sécurité et l'architecture de votre boutique PrestaShop, réalisé sur-mesure par Alexandre Carette (#4467).\u003C\u002Fp>",[],[238,241,244,247,250,253,256,259],{"q":239,"a":240},"Pourquoi PrestaShop affiche-t-il une page blanche au lieu d'un message d'erreur ?","PrestaShop et PHP masquent par défaut les erreurs en production (directive display_errors désactivée) afin de ne pas exposer des données d'infrastructure ou de sécurité critiques aux visiteurs.",{"q":242,"a":243},"Où se trouve le fichier defines.inc.php dans l'arborescence PrestaShop ?","Le fichier defines.inc.php est localisé dans le répertoire config\u002F à la racine de votre boutique PrestaShop (chemin standard : \u002Fvar\u002Fwww\u002Fhtml\u002Fconfig\u002Fdefines.inc.php).",{"q":245,"a":246},"Comment activer le mode debug sur PrestaShop sans passer par le back-office ?","Ouvrez le fichier config\u002Fdefines.inc.php via SSH ou SFTP, trouvez la ligne define('_PS_MODE_DEV_', false); et remplacez false par true avant d'enregistrer le fichier.",{"q":248,"a":249},"Est-il dangereux de laisser le mode debug activé en production sur PrestaShop ?","Oui, car il expose la structure des répertoires, les requêtes SQL, la trace complète des fonctions et peut dégrader les performances en désactivant certains niveaux de mise en cache.",{"q":251,"a":252},"Comment restreindre l'affichage des erreurs du mode debug à son adresse IP ?","Dans config\u002Fdefines.inc.php, insérez une condition PHP vérifiant la variable $_SERVER['REMOTE_ADDR'] par rapport à votre adresse IP publique pour n'activer _PS_MODE_DEV_ que pour votre poste.",{"q":254,"a":255},"Où sont situés les logs d'erreurs Nginx et Apache sous Linux ?","Les journaux d'erreurs du serveur web se trouvent principalement dans \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log pour Nginx et dans \u002Fvar\u002Flog\u002Fapache2\u002Ferror.log pour Apache sous Debian ou Ubuntu.",{"q":257,"a":258},"Où trouver les logs d'erreurs PHP-FPM sur un serveur dédié ou VPS ?","Les journaux PHP-FPM sont généralement situés dans \u002Fvar\u002Flog\u002Fphp-fpm.log, \u002Fvar\u002Flog\u002Fphp8.1-fpm.log ou dans le répertoire du pool applicatif \u002Fvar\u002Flog\u002Fphp-fpm\u002Fwww-error.log.",{"q":260,"a":261},"Comment désactiver un module PrestaShop directement en base de données ?","Exécutez la requête SQL : UPDATE ps_module SET active = 0 WHERE name = 'nom_du_module'; en adaptant le préfixe de table et le nom technique du module défectueux.","Page blanche ou erreur 500 sur PrestaShop ? Mode debug, logs d'erreurs, arrêt d'un module en base et purge du cache : suivez ce protocole d'urgence pas à pas.","2026-10-01T06:00:03.000Z",11,{"fr":208},[267],"fr",{"id":35,"slug":269,"name":101,"firstname":270,"lastname":271,"title":272,"bio":273,"image":274,"linkedinUrl":275,"url":276},"alexandre-carette","Alexandre","Carette","Architecte e-commerce, SEO technique, AIO\u002FGEO","Consultant freelance e-commerce et SEO IA (AIO\u002FGEO), basé à Metz. Architecte PrestaShop Headless, SEO technique, visibilité dans les moteurs conversationnels (ChatGPT, Perplexity, Gemini). Zéro sous-traitance : un seul interlocuteur.","\u002Falexandre-carette-256.webp","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcarette-alexandre","\u002Fauteur\u002Falexandre-carette",[],[279,291,302,305],{"id":280,"title":281,"category":212,"subcategory":213,"slug":282,"segment":283,"categoryPath":211,"path":284,"linkRewrite":285,"excerpt":286,"coverImage":287,"thumbnailImage":287,"nuxtUrl":288,"indexable":20,"datePublished":289,"dateUpdated":289,"readingTime":290,"faqCount":122},122,"Micro-caching Nginx PrestaShop : 1 000 req\u002Fs sans saturer","performance--cache-http-microcaching-nginx-prestashop","cache-http-microcaching-nginx-prestashop","prestashop\u002Fperformance\u002Fcache-http-microcaching-nginx-prestashop","prestashop--performance--cache-http-microcaching-nginx-prestashop","Découvrez comment configurer le micro-caching Nginx pour PrestaShop, absorber 1 000 requêtes par seconde et isoler strictement paniers et comptes clients.","\u002Fblog-covers\u002Fa7dac614da63.webp","\u002Fblog\u002Fprestashop\u002Fperformance\u002Fcache-http-microcaching-nginx-prestashop","2026-10-05T06:00:02.000Z",14,{"id":292,"title":293,"category":212,"subcategory":213,"slug":294,"segment":295,"categoryPath":211,"path":296,"linkRewrite":297,"excerpt":298,"coverImage":299,"thumbnailImage":299,"nuxtUrl":300,"indexable":20,"datePublished":301,"dateUpdated":301,"readingTime":264,"faqCount":122},121,"Optimisation SQL PrestaShop : diviser le TTFB MariaDB par 3","performance--optimisation-sql-index-mariadb-prestashop-ttfb","optimisation-sql-index-mariadb-prestashop-ttfb","prestashop\u002Fperformance\u002Foptimisation-sql-index-mariadb-prestashop-ttfb","prestashop--performance--optimisation-sql-index-mariadb-prestashop-ttfb","Accélérez PrestaShop : découvrez les index MariaDB critiques, la purge des tables volumineuses et le réglage InnoDB pour diviser votre TTFB par trois.","\u002Fblog-covers\u002Fcb78a78910ec.webp","\u002Fblog\u002Fprestashop\u002Fperformance\u002Foptimisation-sql-index-mariadb-prestashop-ttfb","2026-10-02T06:00:03.000Z",{"id":229,"title":231,"category":212,"subcategory":213,"slug":233,"segment":303,"categoryPath":211,"path":230,"linkRewrite":304,"excerpt":262,"coverImage":234,"thumbnailImage":234,"nuxtUrl":208,"indexable":20,"datePublished":263,"dateUpdated":263,"readingTime":264,"faqCount":122},"page-blanche-prestashop-diagnostiquer-corriger-erreur-500","prestashop--performance--page-blanche-prestashop-diagnostiquer-corriger-erreur-500",{"id":306,"title":307,"category":212,"subcategory":213,"slug":308,"segment":309,"categoryPath":211,"path":310,"linkRewrite":311,"excerpt":312,"coverImage":313,"thumbnailImage":313,"nuxtUrl":314,"indexable":20,"datePublished":315,"dateUpdated":315,"readingTime":316,"faqCount":122},119,"Lenteur PrestaShop : audit et optimisation technique","performance--lenteur-prestashop-methode-audit-optimisation","lenteur-prestashop-methode-audit-optimisation","prestashop\u002Fperformance\u002Flenteur-prestashop-methode-audit-optimisation","prestashop--performance--lenteur-prestashop-methode-audit-optimisation","Résolvez la lenteur de PrestaShop avec une méthode d'ingénieur : diagnostic du TTFB, profiling SQL MariaDB, assainissement des hooks et gains mesurés.","\u002Fblog-covers\u002Fe806df171bd6.webp","\u002Fblog\u002Fprestashop\u002Fperformance\u002Flenteur-prestashop-methode-audit-optimisation","2026-09-30T06:00:03.000Z",12]