Le WordPress d'aujourd'hui, décodé pour les développeurs

Hébergement & serveurs

413 Request Entity Too Large : l’erreur qui bloque l’import de médias volumineux

Un PDF de 40 Mo refuse de s'importer sans message clair côté WordPress. La cause se cache dans trois réglages serveur qu'il faut aligner ensemble.

Par WordPress Développement • 3 janvier 2023 • 4 min de lecture • Aucun commentaire
413 Request Entity Too Large : l'erreur qui bloque l'import de médias volumineux

413 Request Entity Too Large. Le message s’affiche brut, sans détail, souvent dans une page blanche générée par nginx et non par WordPress lui-même. L’import échoue avant même que PHP n’ait eu l’occasion de traiter le fichier, ce qui explique pourquoi augmenter upload_max_filesize dans le tableau de bord ou dans php.ini ne change strictement rien au comportement observé.

Ce symptôme touche particulièrement les hébergements mutualisés où l’accès aux réglages du serveur web est restreint, mais aussi les VPS mal configurés après une migration : le réglage par défaut de nginx limite les téléversements à 1 Mo, une valeur pensée pour des formulaires classiques, pas pour des exports vidéo ou des PDF illustrés.

Symptôme

Le formulaire d’ajout de média de la bibliothèque WordPress affiche une erreur générique (« Erreur HTTP » ou un écran blanc) dès qu’un fichier dépasse un certain seuil, souvent 1 Mo. Les petits fichiers passent sans problème, ce qui égare le diagnostic vers un souci de plugin ou de thème alors que la cause est entièrement côté serveur.

  • Le fichier refuse de s’importer au-delà d’une taille précise, toujours la même
  • Aucune erreur PHP dans les journaux de l’application : normal, PHP n’est jamais atteint
  • Le comportement est identique en navigation privée et sur un autre navigateur

Diagnostic

Trois couches peuvent bloquer une requête volumineuse, et il faut les vérifier dans l’ordre où la requête les traverse : le proxy ou reverse-proxy en frontal (souvent nginx même devant Apache), PHP-FPM, puis WordPress lui-même via ses propres filtres.

L'essentiel à retenir : Trois réglages doivent être alignés ensemble ; php.ini ne suffit jamais seul ; Le proxy peut bloquer avant même PHP

Correctif : les trois réglages à aligner

Sur un bloc serveur nginx, la directive client_max_body_size fixe la limite avant que la requête n’atteigne PHP :

server {
    client_max_body_size 64M;
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

Côté PHP-FPM, deux réglages dans php.ini (ou dans le pool spécifique) doivent suivre la même valeur, voire la dépasser légèrement pour absorber l’encodage multipart :

upload_max_filesize = 64M
post_max_size = 72M

Sur un hébergement mutualisé, ces réglages passent parfois par un fichier .user.ini déposé à la racine du site, lu automatiquement par PHP-FPM sans redémarrage nécessaire. Sur un VPS, un redémarrage du service est requis après modification :

sudo systemctl restart php8.1-fpm
sudo systemctl reload nginx

Si un proxy applicatif comme Cloudflare est aussi présent devant le serveur, il impose sa propre limite de téléversement selon le forfait souscrit, indépendamment de la configuration nginx. C’est un piège fréquent : le serveur est correctement réglé, mais le proxy en amont refuse la requête avant qu’elle n’atteigne l’infrastructure.

Prévention

Une checklist courte évite de reproduire l’incident sur le prochain site du parc :

  1. Documenter la taille maximale de fichier attendue dès le cahier des charges du site
  2. Aligner client_max_body_size, upload_max_filesize et post_max_size dans le même commit d’infrastructure
  3. Vérifier la limite du CDN ou du proxy tiers avant d’accuser le serveur d’origine
  4. Tester l’import d’un fichier représentatif de la taille maximale annoncée avant la mise en production

Un import qui échoue sans message clair mérite toujours d’être testé en ligne de commande avec curl -F avant de suspecter un plugin : cela isole immédiatement la couche fautive.

Le cas particulier d’Apache

Sur un hébergement encore basé sur Apache seul, sans nginx en frontal, la directive équivalente se règle via LimitRequestBody dans la configuration du site ou dans un fichier .htaccess à la racine, avec une valeur exprimée en octets plutôt qu’en unités lisibles :

# .htaccess
LimitRequestBody 67108864

Un mutualisé cPanel expose parfois ce réglage directement dans l’interface MultiPHP INI Editor, sans nécessiter d’accès SSH, ce qui simplifie la correction pour une équipe sans accès root au serveur.

En résumé

L’erreur 413 n’est jamais un problème WordPress : c’est un désaccord entre plusieurs couches serveur qui doivent partager la même limite de taille. Aligner nginx, PHP-FPM et l’éventuel proxy en frontal résout le problème dans l’immense majorité des cas, sans toucher à une ligne de code applicatif. Sur un parc de sites hébergés chez plusieurs prestataires différents, documenter ce triplet de réglages dans une fiche technique par serveur évite de redécouvrir le même diagnostic à chaque nouvel incident.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi