Le problème : WordPress refuse ton fichier à l’upload
Tu glisses une vidéo, un PDF de catalogue ou un fichier ZIP dans la médiathèque WordPress — et au lieu de progresser, la barre d’upload se fige. Le message peut prendre plusieurs formes selon le contexte :
- “Le fichier téléchargé dépasse la directive upload_max_filesize dans php.ini”
- “413 Request Entity Too Large” (visible dans le navigateur ou dans l’onglet Réseau des DevTools)
- “Échec du téléchargement” sans autre détail
Le bon côté : c’est une configuration PHP ou serveur, pas un bug WordPress. Ça se règle en quelques minutes dès qu’on sait où taper. Voici les causes, puis les solutions du plus simple au plus technique.
Ce qui cause le blocage
Plusieurs directives PHP contrôlent la taille des fichiers entrants. Quand l’une d’elles est trop basse, WordPress coupe le transfert avant même d’écrire le fichier sur le disque.
upload_max_filesize: taille maximale d’un fichier uploadé seul. La valeur par défaut chez beaucoup d’hébergeurs mutualisés est 2 Mo ou 8 Mo.post_max_size: taille totale de la requête HTTP POST (fichier + données du formulaire). Elle doit toujours être supérieure ou égale àupload_max_filesize, sinon c’est elle qui bloque en premier.memory_limit: mémoire PHP allouée au script. Un gros upload peut être traité en mémoire avant l’écriture disque ; si cette valeur est trop basse, PHP plante avant la fin. (Sur ce point, l’article sur l’erreur critique WordPress détaille comment la remonter.)max_execution_time: durée maximale d’un script PHP en secondes. Un upload lent (connexion lente + gros fichier) peut dépasser ce délai.- Limite côté serveur Nginx/Apache : indépendante de PHP, elle peut bloquer la requête avant même que PHP ne la reçoive. C’est typiquement l’erreur 413 pure, visible dans le navigateur.
| Directive | Rôle | Valeur conseillée | Symptôme si trop basse |
|---|---|---|---|
upload_max_filesize | Taille max d’un fichier | 64M ou 128M | ”Fichier trop volumineux” |
post_max_size | Taille totale de la requête | 128M (> upload) | Upload silencieusement coupé |
memory_limit | RAM PHP par script | 256M | Écran blanc ou erreur critique |
max_execution_time | Durée max du script | 120 (secondes) | Upload qui “expire” à mi-chemin |
Solution 1 — Le panel hébergeur (toujours essayer en premier)
La plupart des hébergeurs (O2Switch, Infomaniak, OVH, Ionos, PlanetHoster…) exposent ces réglages dans leur panel sans toucher à aucun fichier.
- Connecte-toi à cPanel, Plesk ou l’interface propriétaire de ton hébergeur.
- Cherche “PHP”, “Configuration PHP” ou “Sélecteur PHP”.
- Repère les champs
upload_max_filesize,post_max_size,memory_limit,max_execution_time. - Remonte-les aux valeurs du tableau ci-dessus, sauvegarde.
- Retourne dans WordPress > Médias > Ajouter : la nouvelle limite doit s’afficher en bas de la zone d’upload.
Si ton hébergeur ne propose pas ces réglages en interface, passe aux méthodes suivantes.
Solution 2 — Via un fichier .htaccess (Apache uniquement)
Ouvre le .htaccess à la racine de ton site (accessible via FTP ou le gestionnaire de fichiers cPanel). Ajoute ces lignes avant le bloc WordPress :
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 256M
php_value max_execution_time 120
Attention : cette méthode ne fonctionne que si ton hébergement tourne sur Apache et si le fichier .htaccess est autorisé à surcharger la config PHP (AllowOverride All). Sur Nginx pur, ces directives sont ignorées — passe directement à la solution 3 ou 4.
Solution 3 — Via wp-config.php
WordPress expose quelques directives PHP directement depuis son fichier de configuration. Ouvre wp-config.php à la racine et ajoute avant la ligne /* That's all, stop editing! */ :
@ini_set('upload_max_filesize', '128M');
@ini_set('post_max_size', '128M');
@ini_set('memory_limit', '256M');
@ini_set('max_execution_time', '120');
Le @ supprime les warnings si l’hébergeur bloque ces appels. Cette méthode est plus portable que .htaccess mais certains hébergeurs en mode CGI/FastCGI l’ignorent aussi. Si ça ne suffit pas, utilise un php.ini dédié.
Solution 4 — Via un fichier php.ini à la racine
Crée (ou modifie) un fichier nommé php.ini à la racine du site et ajoute :
upload_max_filesize = 128M
post_max_size = 128M
memory_limit = 256M
max_execution_time = 120
max_input_time = 120
Sur certains hébergeurs mutualisés, ce fichier doit également être placé dans le dossier /wp-admin/ pour que l’interface admin WordPress le lise. Crée une copie identique dans les deux dossiers.
Solution 5 — Erreur 413 côté Nginx (limite client_max_body_size)
Si le message 413 Request Entity Too Large apparaît directement dans le navigateur (pas dans l’interface WordPress), le blocage vient de Nginx avant PHP. Il faut modifier la directive client_max_body_size dans la configuration du vhost.
Sur un VPS ou serveur dédié auquel tu as accès SSH :
# Dans le bloc server {} concerné
client_max_body_size 128M;
Puis recharge Nginx :
sudo nginx -t && sudo systemctl reload nginx
Sur un hébergement mutualisé où Nginx est géré par l’hébergeur, tu n’as pas accès à ce fichier : contacte le support et cite explicitement client_max_body_size. La plupart remontent la valeur sur simple demande.
Vérifier que la modification a bien été prise en compte
Dans WordPress, va dans Médias > Ajouter un fichier. En bas de la zone de glisser-déposer, WordPress affiche la taille maximum autorisée — ex. “Taille maximale : 128 Mo”. Si la valeur n’a pas changé, WordPress lit encore l’ancienne config.
Tu peux aussi créer un fichier phpinfo.php temporaire à la racine :
<?php phpinfo();
Visite https://tonsite.fr/phpinfo.php, cherche upload_max_filesize et vérifie la colonne “Local Value”. Supprime ce fichier immédiatement après, il expose des informations sensibles sur ton serveur.
Tableau récapitulatif cause → solution
| Cause | Où régler | Priorité |
|---|---|---|
| Valeur PHP trop basse (hébergeur mutualisé) | Panel hébergeur | 1 en premier |
| Apache + .htaccess autorisé | .htaccess | 2 |
| WordPress accessible, PHP ini_set actif | wp-config.php | 3 |
| Hébergeur accepte php.ini dédié | php.ini racine | 4 |
| Nginx bloque avant PHP (413 navigateur) | client_max_body_size (VPS) ou support | 5 |
Pourquoi post_max_size doit-il être supérieur à upload_max_filesize ?
post_max_size couvre la totalité de la requête POST : le fichier + les champs du formulaire + les en-têtes multipart. Si post_max_size vaut 8M et upload_max_filesize vaut 64M, PHP coupe la requête à 8M avant même d’inspecter le fichier. La règle : post_max_size ≥ upload_max_filesize + quelques mégaoctets de marge.
J'ai modifié .htaccess mais la limite n'a pas changé. Pourquoi ?
Deux causes fréquentes : ton serveur tourne sous Nginx (les directives php_value sont ignorées), ou le AllowOverride du vhost est configuré sur None. Dans les deux cas, utilise la méthode php.ini dédié ou passe par le panel hébergeur.
Quelle taille maximum est raisonnable pour un site WordPress ?
Pour un site vitrine ou blog, 64M couvre largement images et PDFs. Pour un site avec vidéos natives, packs téléchargeables ou thèmes lourds, 128M à 256M est plus confortable. Au-delà, réfléchis à héberger les vidéos sur Vimeo ou YouTube et à utiliser un CDN pour les gros fichiers statiques.
Mon hébergeur refuse d'augmenter la limite. Que faire ?
Certains hébergeurs d’entrée de gamme bloquent ces directives par politique de sécurité. Options : (1) passer sur une offre supérieure chez le même hébergeur, (2) migrer vers un hébergeur plus flexible (O2Switch, Infomaniak, Kinsta, WP Engine), (3) pour les très gros fichiers, utiliser un plugin de chunked upload comme WP Migrate ou Uploadify qui découpent le fichier en morceaux. Ce dernier point contourne la limite sans toucher à PHP, mais ne résout pas le problème de fond.
Après upload réussi, WordPress me dit que le fichier n'est pas une image valide. C'est lié ?
Non, c’est un problème différent. Une fois la limite d’upload corrigée, une erreur “fichier non valide” pointe vers un problème de permissions sur le dossier wp-content/uploads (doit être 755 ou 775) ou vers un conflit de plugin de sécurité qui filtre les types MIME. La limite d’upload et la validation du fichier sont deux couches distinctes.
Quand passer la main à un pro
Si tu as essayé les quatre méthodes de modification PHP et que la limite affichée dans WordPress n’a pas bougé d’un méga, c’est que la configuration serveur est verrouillée à un niveau auquel tu n’as pas accès. Un développeur avec accès SSH (ou une agence avec une relation directe avec l’hébergeur) règle ça en dix minutes — là où une heure de tickets support peut ne rien donner.
C’est aussi le bon moment pour vérifier que ton contrat de maintenance couvre ce type d’intervention, ou pour auditer ce que ton devis de maintenance inclut vraiment avant d’en avoir besoin en urgence. Et si tu cherches à reprendre le contrôle complet de tes accès serveur, commence par la liste des 7 accès à exiger de ton agence.
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