
⚙️ Comment corriger l'erreur « The uploaded file exceeds the upload_max_filesize directive » dans php.ini
Vous téléversez un thème, une extension ou une image dans la médiathèque WordPress et une ligne rouge apparaît: «Le fichier téléversé dépasse la directive upload_max_filesize de php.ini.» Le fichier pèse 10 mégaoctets et WordPress le refuse. Une situation familière pour toute personne qui administre un site web.
Le problème ne vient ni de WordPress ni de votre fichier. Les hébergeurs limitent la taille des fichiers téléversés au niveau de PHP, et la limite standard de 2 mégaoctets n’a pas changé depuis des années. Vous pouvez l’augmenter en cinq minutes avec l’une des cinq méthodes ci-dessous, de la plus simple à la plus avancée.
💡 Aperçu rapide:
- Augmentez la limite via wp-config.php avec un simple appel
ini_set, fonctionne sur la plupart des hébergeurs - Modifiez les paramètres dans cPanel via l’éditeur MultiPHP INI si votre hébergeur utilise cPanel
- Créez ou modifiez le fichier php.ini par FTP, une méthode qui fonctionne quel que soit le panneau de contrôle
- Ajoutez des directives dans le fichier.htaccess lorsque vous n’avez pas accès au php.ini
- En dernier recours, ajoutez
@ini_setdans le fichier functions.php de votre thème enfant
D’où vient la limite upload_max_filesize
La directive upload_max_filesize se trouve dans le fichier de configuration php.ini, le fichier principal des paramètres PHP sur votre serveur. Elle détermine la taille maximale d’un fichier téléversé unique. La valeur par défaut est de 2 mégaoctets, ce qui suffit pour de petites images, mais un thème WordPress ou une vidéo ne passera pas dans cette limite.
Deux autres directives fonctionnent de concert avec elle: post_max_size (taille totale de la requête POST, 8 Mo par défaut) et memory_limit (mémoire disponible pour le script, 128 Mo par défaut). Toutes les trois sont liées: si vous augmentez upload_max_filesize, vérifiez que post_max_size n’est pas inférieur à la nouvelle valeur, sinon la restriction restera au niveau précédent.
Vous pouvez vérifier les limites actuelles directement depuis le panneau d’administration WordPress: allez dans Médias → Ajouter et regardez la ligne sous la zone de téléversement, qui indique la taille maximale. Vous pouvez aussi installer l’extension PHP Info et retrouver les directives concernées dans la sortie de phpinfo().
1. Augmenter la limite via wp-config.php
La méthode la plus rapide, qui fonctionne sur la plupart des hébergements mutualisés. Le fichier wp-config.php se trouve dans le dossier racine du site et se charge avant tout code WordPress, donc les directives ini_set qu’il contient sont prioritaires.
Connectez-vous au serveur via un client FTP (FileZilla, une option gratuite et fiable) ou ouvrez le gestionnaire de fichiers de votre panneau de contrôle d’hébergement. Trouvez wp-config.php dans le dossier racine (généralement public_html):

Ajoutez les lignes suivantes à la fin du fichier, avant le commentaire /* That's all, stop editing! */:
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Enregistrez le fichier et actualisez la page de la médiathèque WordPress. La limite de téléversement devrait passer à 64 mégaoctets. Si le chiffre n’a pas changé, l’hébergeur a bloqué ini_set, passez alors à la méthode suivante.
2. Modifier les paramètres via l’éditeur MultiPHP INI dans cPanel
Si votre hébergeur utilise cPanel, l’éditeur MultiPHP INI intégré vous permet de modifier les paramètres PHP sans éditer manuellement les fichiers. Il applique automatiquement les valeurs au site sélectionné et écrase les valeurs par défaut de l’hébergement.
Connectez-vous à cPanel et trouvez la section Logiciels → Éditeur MultiPHP INI:

Sélectionnez le site souhaité dans la liste déroulante en haut de la page. Faites défiler jusqu’à la directive upload_max_filesize et saisissez la nouvelle valeur (par exemple, 64M). Juste en dessous, trouvez post_max_size et fixez-le un peu plus haut, 80M. Cliquez sur Appliquer. Les modifications prennent effet immédiatement.
Cette méthode est préférable à la première: cPanel gère la syntaxe automatiquement et les paramètres ne sont pas réinitialisés après une mise à jour de WordPress.
3. Modifier le fichier php.ini par FTP
Si vous n’avez pas accès à cPanel ou si votre hébergeur ne prend pas en charge l’éditeur MultiPHP INI, travaillez directement avec le fichier php.ini. Il contrôle tous les paramètres PHP et sa modification est le moyen le plus fiable d’augmenter les limites.
Connectez-vous au serveur par FTP et allez dans le dossier racine du site. Trouvez le fichier php.ini. S’il n’existe pas (le php.ini utilisateur est souvent absent sur les hébergements mutualisés), créez un nouveau fichier texte avec ce nom:

Ajoutez les directives suivantes au fichier:
1 upload_max_filesize = 64M 2 post_max_size = 80M 3 memory_limit = 256M 4 file_uploads = On 5 max_execution_time = 300 6 max_input_time = 300
Enregistrez le fichier. Pour que les modifications prennent effet, certains hébergeurs exigent une directive suPHP dans le fichier .htaccess. Ajoutez ce bloc au fichier .htaccess:
1 <IfModule mod_suphp.c> 2 suPHP_ConfigPath /home/yourusername/public_html 3 </IfModule>
Remplacez yourusername par le nom d'utilisateur de votre compte d'hébergement. Si le site plante avec une erreur après avoir ajouté ce bloc, supprimez-le: votre serveur fonctionne en CGI et n'a pas besoin de suPHP.
Sur les serveurs locaux, le chemin vers php.ini dépend de la plateforme: XAMPP (Windows): C:\xampp\php\php.ini; MAMP (macOS): /Applications/MAMP/conf/php/php.ini; LAMP (Linux): /etc/php/version/apache2/php.ini. Après modification, redémarrez le serveur web.
4. Ajouter des directives dans le.htaccess
Quand l'hébergeur a bloqué l'accès à php.ini et que ini_set ne fonctionne pas, la dernière ligne de défense au niveau serveur est le fichier .htaccess. Il vous permet de définir des paramètres PHP pour un dossier spécifique du site via les directives php_value.
Connectez-vous en FTP et trouvez le fichier .htaccess dans le dossier racine. Téléchargez une copie de sauvegarde sur votre ordinateur (obligatoire!). Ajoutez ensuite les lignes suivantes à la fin du fichier:

1 php_value upload_max_filesize 64M 2 php_value post_max_size 80M 3 php_value memory_limit 256M 4 php_value max_execution_time 300 5 php_value max_input_time 300
Enregistrez le .htaccess et rafraîchissez le site. Si une erreur 500 Internal Server Error apparaît à la place du site, votre serveur fonctionne en CGI et la directive php_value dans .htaccess n'est pas prise en charge. Supprimez les lignes ajoutées pour restaurer le site et utilisez la méthode 3 (création d'un php.ini).
Nous avons traité en détail l'erreur 500 et sa variante 502 dans notre guide de résolution des erreurs serveur WordPress.
5. Ajouter @ini_set dans le functions.php de votre thème
Cette méthode est destinée aux situations où toutes les méthodes précédentes sont indisponibles ou que vous souhaitez conserver les paramètres dans le dépôt du thème. Ajoutez le code dans le fichier functions.php de votre thème enfant, qui s'exécute à chaque requête et outrepasse les limites à la volée.
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Placez le code à la fin de functions.php, mais avant la balise fermante ?> (si elle est présente). Utilisez un thème enfant: lors de la mise à jour du thème parent, les modifications dans le functions.php du thème principal sont écrasées, tandis qu'un thème enfant survit aux mises à jour sans perte.
Après avoir ajouté le code, vérifiez la limite dans la médiathèque WordPress. Notez que sur certains hébergements, ini_set pour upload_max_filesize est bloqué au niveau PHP (la directive PHP_INI_SYSTEM ne permet pas de changer la valeur à l'exécution). Dans ce cas, @ini_set sera silencieusement ignoré et vous devrez utiliser la méthode 3 ou 4.
Pourquoi la limite n'a pas changé: diagnostic
Vous avez suivi toutes les instructions mais la limite est restée la même? Parcourez cette liste de contrôle:
post_max_sizeest inférieur au nouveauupload_max_filesize. C'est la cause la plus fréquente:post_max_sizedoit être au moins égal, et de préférence 20 à 30% supérieur, àupload_max_filesize: la documentation PHP exige explicitementpost_max_size≥upload_max_filesize. Les téléversements par lots de plusieurs fichiers et les champs de formulaire sont comptabilisés danspost_max_size.- Le fichier a été créé dans le mauvais dossier. PHP cherche
php.inidans le répertoire du script, puis remonte l'arborescence jusqu'à la racine du serveur. Placezphp.inià la racine du site (public_html), pas dans un sous-dossier. - Le cache PHP (OPcache) conserve l'ancienne configuration. Certains serveurs mettent en cache
php.ini. Redémarrez PHP via le panneau d'hébergement ou attendez 5 à 10 minutes que le cache soit invalidé. - Le serveur fonctionne en CGI/FastCGI et ignore le
.htaccess. Changez d'approche: utilisezphp.ini(méthode 3) ouuser.inipour FastCGI. - L'hébergeur a verrouillé la limite. Sur les offres ultra-économiques, la limite de téléversement est fixe et ne peut être modifiée par aucune méthode, sauf en changeant d'offre.
Si aucun de ces points ne vous a aidé, contactez le support de votre hébergeur. Fournissez votre nom de domaine, la méthode que vous avez utilisée pour modifier la limite, et demandez-leur de vérifier si la modification de upload_max_filesize est autorisée sur votre offre.
Tutoriel vidéo
Regardez le processus étape par étape de résolution de cette erreur, du diagnostic à la vérification finale, dans cette vidéo:
⁉️🤔 Foire aux questions
Quelle valeur choisir pour upload_max_filesize?
Pour la plupart des sites, 64 Mo suffisent, ce qui couvre le téléversement de thèmes, d’extensions et d’images en haute résolution. Si vous travaillez avec des fichiers vidéo ou de grandes archives ZIP via l’administration, réglez-la sur 128 à 256 Mo. Ne visez pas les gigaoctets sans raison: plus la limite est élevée, plus le serveur réserve de mémoire pour chaque requête de téléversement.
Puis-je téléverser un fichier en contournant la limite?
Oui, via FTP. Un client FTP se connecte directement au serveur et ne passe pas par le gestionnaire PHP, donc les limites d’
upload_max_filesizene s’appliquent pas. Téléversez le fichier danswp-content/uploadspar FTP, puis enregistrez-le dans la bibliothèque de médias WordPress avec l’extension Add From Server.
Quelle est la différence entre upload_max_filesize et post_max_size?
upload_max_filesizecorrespond à la taille maximale d’un seul fichier lors d’un téléversement.post_max_sizeest la taille totale de l’ensemble de la requête POST, y compris tous les fichiers, les champs de formulaire et les en-têtes de service. Si vous téléversez trois fichiers de 20 Mo,upload_max_filesizedoit être ≥ 20 Mo, tandis quepost_max_sizedoit être ≥ 60 Mo plus une marge pour le formulaire. C’est pourquoipost_max_sizeest toujours défini à une valeur supérieure àupload_max_filesize.
Pourquoi les limites sont-elles réinitialisées après les mises à jour de WordPress?
WordPress ne touche pas aux paramètres PHP du serveur lors des mises à jour, mais si vous avez modifié
wp-config.phpou lefunctions.phpdu thème principal, les mises à jour du cœur ou du thème ont pu écraser ces fichiers. Conservez toujours les paramètres PHP personnalisés dansphp.ini, l’éditeur MultiPHP INI de cPanel ou un thème enfant: ces emplacements ne sont pas affectés par les mises à jour.
Dois-je redémarrer le serveur après avoir modifié php.ini?
Pour l’hébergement mutualisé et cPanel, non: les modifications s’appliquent automatiquement en quelques minutes. Pour les VPS et les serveurs dédiés avec PHP-FPM, redémarrez le service:
sudo systemctl restart php-fpm(ouphp8.3-fpm, selon la version). Apache avec mod_php prend généralement en compte les modifications sans redémarrage.
Que faire si la limite ne veut toujours pas augmenter
Les cinq méthodes ci-dessus couvrent pratiquement tous les scénarios d’hébergement. Du wp-config.php de base au functions.php du thème enfant, vous avez parcouru toute la chaîne. Si, après avoir honnêtement exécuté chaque étape et lancé les diagnostics, la limite reste inchangée, la cause est une politique stricte de l’hébergeur et vous ne pourrez pas la contourner sans changer d’offre ou d’hébergeur.
Contactez le support et demandez directement si la modification d’upload_max_filesize est autorisée sur votre offre. Une réponse négative est une raison d’envisager de passer à un VPS ou à une offre mutualisée plus flexible où vous contrôlez les paramètres PHP sans tenir compte des voisins de serveur. En attendant, téléversez les fichiers volumineux via FTP: il n’y a aucune restriction de taille et Add From Server les intégrera à la bibliothèque de médias.



