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

DirectiveRôleSymptôme basValeur conseillée
memory_limitRAM allouée au scriptÉcran blanc, erreur mémoire256M, 512M
max_execution_timeDurée d’exécution maxTimeout, update échoué120, 300
max_input_timeTemps d’analyse des donnéesUpload mystérieux qui plante120
max_input_varsNb de variables par requêteMenu tronqué, options perdues3000, 5000
post_max_sizeTaille totale d’une requête POSTUpload échoue malgré filesize OK> upload_max_filesize
upload_max_filesizeTaille d’un fichier uploadéErreur 413, fichier refusé32M, 64M
max_file_uploadsNb fichiers simultanésImport 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 :

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 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