Quand WordPress se bloque sans vraiment expliquer pourquoi
Écran blanc, upload qui s’arrête à 99 %, éditeur Elementor qui tourne indéfiniment, erreur 500 qui apparaît au moment d’enregistrer une page… Ces symptômes n’ont pas l’air liés. Pourtant, ils partagent souvent la même cause : une directive PHP trop restrictive pour ce que WordPress essaie de faire.
PHP est le langage qui fait tourner WordPress côté serveur. Il s’exécute dans un environnement contraint par des plafonds : mémoire maximale allouée, durée d’exécution autorisée, taille de fichier acceptée. Ces plafonds ont une raison d’être, ils protègent le serveur contre les scripts qui partent en boucle. Mais quand ils sont trop bas, ou que votre site a grossi, ils deviennent des obstacles.
Ce guide détaille chaque directive, son rôle, son symptôme d’échec, et les quatre endroits où vous pouvez la modifier.
Les sept directives à connaître
memory_limit
Ce que c’est. La quantité de RAM qu’un script PHP peut consommer. Quand WordPress charge un plugin lourd ou génère une page complexe, il a besoin de mémoire de travail.
Symptôme quand trop bas. Écran blanc (WSOD), erreur critique “Allowed memory size exhausted”, tableau de bord qui refuse de charger après l’installation d’un plugin.
Valeur de départ raisonnable. 256M pour un site standard, 512M si vous utilisez Elementor, WooCommerce ou un constructeur visuel lourd.
max_execution_time
Ce que c’est. Le nombre de secondes maximum pendant lequel un script peut s’exécuter avant d’être interrompu de force.
Symptôme quand trop bas. Timeout lors d’une importation CSV, mise à jour qui échoue et casse le site, génération de sitemap ou backup qui s’arrête à mi-chemin.
Valeur de départ raisonnable. 120 secondes pour la plupart des sites. Montez à 300 si vous faites des imports/exports fréquents.
max_input_time
Ce que c’est. Le temps accordé à PHP pour analyser les données reçues (formulaires, uploads) avant de commencer à les traiter. Distinct de max_execution_time.
Symptôme quand trop bas. Upload de fichiers volumineux qui échoue mystérieusement alors que upload_max_filesize est correct, formulaires qui n’envoient rien.
Valeur de départ raisonnable. 120 secondes. Rarement le premier coupable, mais à vérifier si les autres directives semblent correctes.
max_input_vars
Ce que c’est. Le nombre maximum de variables acceptées en une seule requête HTTP (champs de formulaire, options de menu, paramètres de page).
Symptôme quand trop bas. Menus de navigation qui se sauvegardent en tronqué (les items disparaissent), options de thème qui ne se sauvegardent pas entièrement, éditeurs WPBakery ou Elementor qui perdent des blocs.
Valeur de départ raisonnable. 3000. Avec un thème Elementor complexe ou un menu profond, montez à 5000.
post_max_size
Ce que c’est. La taille maximale totale d’une requête POST, c’est-à-dire tout ce qui est envoyé en une fois vers le serveur, uploads inclus.
Symptôme quand trop bas. Upload qui échoue même si upload_max_filesize semble suffisant. La règle : post_max_size doit toujours être supérieur à upload_max_filesize.
Valeur de départ raisonnable. 64M si upload_max_filesize est à 32M. Adaptez proportionnellement.
upload_max_filesize
Ce que c’est. La taille maximale d’un fichier uploadé individuellement via PHP.
Symptôme quand trop bas. Erreur 413 lors d’un upload, message “Le fichier dépasse la taille maximale” dans la médiathèque WordPress, impossibilité d’importer un thème .zip volumineux.
Valeur de départ raisonnable. 32M à 64M selon vos besoins. Inutile de monter à 512M si vous n’uploadez que des images, un plugin de compression est souvent la vraie solution.
max_file_uploads
Ce que c’est. Le nombre de fichiers qu’on peut envoyer simultanément dans une seule requête.
Symptôme quand trop bas. Galerie ou import groupé qui s’arrête après un certain nombre de fichiers.
Valeur de départ raisonnable. 20. La valeur par défaut de PHP (20) convient dans 99 % des cas.
Tableau récapitulatif
| Directive | Rôle | Symptôme bas | Valeur conseillée |
|---|---|---|---|
memory_limit | RAM allouée au script | Écran blanc, erreur mémoire | 256M, 512M |
max_execution_time | Durée d’exécution max | Timeout, update échoué | 120, 300 |
max_input_time | Temps d’analyse des données | Upload mystérieux qui plante | 120 |
max_input_vars | Nb de variables par requête | Menu tronqué, options perdues | 3000, 5000 |
post_max_size | Taille totale d’une requête POST | Upload échoue malgré filesize OK | > upload_max_filesize |
upload_max_filesize | Taille d’un fichier uploadé | Erreur 413, fichier refusé | 32M, 64M |
max_file_uploads | Nb fichiers simultanés | Import groupé tronqué | 20 |
Où modifier ces directives : 4 méthodes
Méthode 1 : wp-config.php (memory_limit uniquement)
WordPress lit cette constante au démarrage et demande à PHP d’augmenter la mémoire allouée si le serveur l’autorise.
// Dans wp-config.php, avant la ligne /* That's all, stop editing! */
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M'); // Pour l'admin uniquement
Limite. Ne fonctionne que pour memory_limit. Pour les autres directives, passez aux méthodes suivantes.
Méthode 2 : .htaccess (serveurs Apache)
Ajoutez ces lignes dans votre .htaccess à la racine du site (juste après # BEGIN WordPress) :
php_value memory_limit 256M
php_value max_execution_time 120
php_value max_input_vars 3000
php_value upload_max_filesize 64M
php_value post_max_size 72M
Attention. Sur certains hébergements mutualisés, les directives php_value sont désactivées et génèrent une erreur 500. Si c’est le cas, supprimez les lignes ajoutées et passez à la méthode suivante.
Méthode 3 : php.ini
Si votre hébergeur vous donne accès à un fichier php.ini (souvent à la racine ou dans /etc/php/), éditez-le directement :
memory_limit = 256M
max_execution_time = 120
max_input_time = 120
max_input_vars = 3000
post_max_size = 72M
upload_max_filesize = 64M
Sur certains hébergements mutualisés, créez un fichier php.ini à la racine du site, il surcharge la configuration globale.
Méthode 4 : Panel hébergeur (la plus fiable)
cPanel, Plesk, Infomaniak, o2switch, OVH… Tous proposent une interface graphique pour modifier les directives PHP du domaine concerné. C’est la méthode la plus propre : elle agit directement sur le moteur PHP sans risquer un conflit avec .htaccess.
Cherchez dans votre panel : “PHP”, “Sélecteur PHP”, “Paramètres PHP” ou “Configuration PHP”.
Vérifier que les changements sont pris en compte
Installez le plugin WP Health Check ou créez un fichier phpinfo.php temporaire à la racine :
<?php phpinfo(); ?>
Accédez-y via monsite.com/phpinfo.php, cherchez les valeurs modifiées dans le tableau affiché. Supprimez ce fichier immédiatement après, il expose des informations sensibles sur votre serveur.
Quand le vrai problème n’est pas la directive
Augmenter les limites PHP résout le symptôme, pas toujours la cause. Si votre site consomme 512 Mo de RAM pour une page vitrine simple, ou prend 90 secondes à s’exécuter, le problème vient probablement d’ailleurs :
- Un plugin mal codé qui charge tout en mémoire sans libérer les ressources.
- Un thème surchargé (Divi, Avada, BeTheme) avec 40 scripts chargés en simultané, lisez notre guide sur Elementor lent pour comprendre la logique.
- Un hébergement sous-dimensionné qui plafonne à 64 Mo de RAM quel que soit le
memory_limitconfiguré, les mutualisés d’entrée de gamme ont des limites matérielles que PHP ne peut pas outrepasser. - Une base de données non optimisée : requêtes lentes, tables de révisions non purgées, performances générales dégradées.
Dans ces cas, augmenter max_execution_time à 300 ne fait que retarder le timeout. L’optimisation WordPress complète passe par un audit du code, pas juste des curseurs serveur.
memory_limit à 512M mais j'ai toujours l'erreur mémoire, pourquoi ?
Plusieurs raisons possibles : votre hébergeur plafonne la RAM physique en dessous de 512 Mo (la valeur PHP ne peut pas dépasser le plafond matériel), ou wp-config.php est écrasé par un php.ini ou .htaccess concurrent qui remet une valeur plus basse. Vérifiez avec phpinfo() quelle valeur est réellement active.
upload_max_filesize à 64M mais l'upload échoue toujours, que vérifier ?
Assurez-vous que post_max_size est supérieur à upload_max_filesize (ex : 72M vs 64M). Si les deux sont corrects, vérifiez max_input_time, un fichier volumineux sur une connexion lente peut dépasser le délai d’analyse avant même d’être traité.
Peut-on mettre memory_limit à 1G pour "faire simple" ?
Techniquement oui, pratiquement non. Une valeur excessivement haute masque les fuites mémoire des plugins mal codés et peut déstabiliser un serveur partagé. Commencez à 256M, montez à 512M si nécessaire, diagnostiquez la cause avant d’aller plus loin.
Ces modifications survivent-elles à une mise à jour de WordPress ?
Les modifications dans php.ini et via le panel hébergeur sont permanentes. Celles dans .htaccess ou wp-config.php survivent aux mises à jour WordPress tant que ces fichiers ne sont pas écrasés, ce qui n’arrive normalement pas lors d’une mise à jour standard.
Mon hébergeur refuse toute modification, que faire ?
C’est le signe d’un hébergement trop restrictif pour WordPress en production. Votre seule option réelle est de migrer vers un hébergeur qui donne accès aux paramètres PHP (o2switch, Infomaniak, OVH Web Hosting avec PHP personnalisé, ou un VPS). Continuer sur un hébergement verrouillé revient à travailler avec les mains liées.
Quand passer la main à un pro
Modifiez ces directives vous-même si vous avez un accès FTP ou à un panel d’hébergement. Faites appel à un développeur ou une agence si :
- Les valeurs semblent correctes dans
phpinfo()mais les erreurs persistent, il faut alors profiler le code. - Votre serveur dépasse régulièrement les limites même après optimisation, c’est une question d’architecture, pas de configuration.
- Vous êtes en production critique et ne pouvez pas vous permettre une erreur 500 pendant le diagnostic, un plan de maintenance avec accès serveur inclus évite exactement ce type de situation.
Les directives PHP sont des curseurs, pas des solutions magiques. Le bon réglage pour votre site dépend de ce que votre code fait réellement, et parfois, c’est le code qu’il faut réparer, pas le plafond.
Ces mêmes directives sont au cœur des pannes de passerelle : un script qui dépasse son temps d’exécution déclenche typiquement une erreur 502 Bad Gateway, où le timeout PHP et celui du serveur frontal doivent être alignés.
Ce problème, Peechy s'en occupe
Plutôt que de tout gérer seul, confiez votre site à une agence qui s'occupe de tout, hébergement, sécurité, maintenance et corrections. Encore plus simple en abonnement : on règle les soucis avant même que vous les remarquiez.
Confier mon site à Peechy