Augmenter la taille maximale d’envoi de fichiers via PHP.ini sous WordPress

Mis à jour le :

La taille limite d’envoi de fichiers sous WordPress est bien souvent restreinte à 2 Mo.

Cette limite ne vient pas de WordPress mais de la configuration de PHP sur votre hébergement : 2 Mo est la valeur par défaut de PHP. WordPress retient la plus petite de ces deux directives : upload_max_filesize, la taille maximale d’un fichier envoyé, et post_max_size, la taille maximale de l’ensemble des données envoyées en une fois. Pour augmenter la limite, il faut donc redéfinir ces directives, et la bonne méthode dépend de la façon dont votre hébergeur exécute PHP.

Vérifier la limite actuelle et le mode d’exécution de PHP

La limite en vigueur est indiquée sous la zone d’envoi de l’écran Médias > Ajouter un fichier média, par exemple « Taille de fichier maximale pour le téléversement : 2 Mo. »

Écran Médias > Ajouter un fichier média de WordPress, intitulé « Téléverser un média » : zone en pointillés « Déposez vos fichiers pour les téléverser » avec le bouton « Sélectionnez des fichiers » et, dessous, la mention « Taille de fichier maximale pour le téléversement : 64 Mo. » ; le menu latéral montre Médias ouvert sur Ajouter un fichier média.
La taille maximale d’envoi indiquée sous la zone de téléversement de WordPress

Pour le détail, ouvrez Outils > Santé du site, onglet Informations, puis dépliez la section Serveur. Vous y trouverez la valeur de upload_max_filesize (ligne Taille maximale de téléversement de fichier), celle de post_max_size (Taille maximale d’envoi de PHP), la Limite de mémoire PHP et la ligne PHP SAPI, qui indique comment PHP est exécuté : apache2handler pour le module PHP d’Apache (mod_php), fpm-fcgi pour PHP-FPM et cgi-fcgi pour CGI/FastCGI. Pour toute autre valeur, reportez-vous à la documentation de votre hébergeur. La section Traitement des médias affiche quant à elle la Taille de fichier effective maximale retenue par WordPress.

Onglet Informations de l’outil Santé du site de WordPress (menu Outils > Santé du site), section Serveur dépliée : Architecture serveur Linux x86_64, Serveur web Apache, Version de PHP 8.4.21, PHP SAPI fpm-fcgi, Limite de mémoire PHP 256M, Taille maximale de téléversement de fichier 64M et Taille maximale d’envoi de PHP 72M.
Les directives PHP qui fixent la taille maximale d’envoi, dans l’outil Santé du site

Méthode 1 : passer par le panneau de votre hébergeur

Si votre hébergeur propose, dans son panneau de gestion, une page de configuration de PHP, c’est la méthode la plus simple : vous y modifiez upload_max_filesize et post_max_size sans toucher aux fichiers du site. Cherchez cette page dans la documentation de votre hébergeur.

Méthode 2 : créer un fichier .user.ini

Si la ligne PHP SAPI indique fpm-fcgi ou cgi-fcgi, PHP lit, en plus de sa configuration principale, les fichiers .user.ini placés dans le dossier du script exécuté et dans ses dossiers parents, jusqu’à la racine du site. Créez donc, à la racine de votre installation WordPress (le dossier qui contient wp-config.php), un fichier nommé .user.ini. Son nom commençant par un point, pensez à afficher les fichiers cachés dans votre client FTP.

Ajoutez-y les lignes suivantes, en adaptant les valeurs à vos besoins :

upload_max_filesize = 64M
post_max_size = 72M

La taille limite d’envoi de fichiers sera augmentée à 64 Mo. La valeur de post_max_size doit rester supérieure à celle de upload_max_filesize, puisqu’elle englobe le fichier et les autres données envoyées avec lui. D’après la documentation de PHP, memory_limit devrait à son tour dépasser post_max_size : si la Limite de mémoire PHP de votre site est plus basse, ajoutez une ligne memory_limit avec une valeur supérieure.

PHP ne relit pas ce fichier à chaque visite : il garde son contenu en cache 5 minutes par défaut (directive user_ini.cache_ttl). Patientez donc quelques minutes avant de vérifier le résultat.

Certains hébergeurs demandent plutôt un fichier php.ini, avec la même syntaxe : suivez alors leur documentation. Avec PHP-FPM, un fichier php.ini placé dans le dossier du site n’est en revanche pas lu. N’ajoutez pas non plus dans le fichier .htaccess la ligne suPHP_ConfigPath, que l’on recommandait autrefois pour déclarer ce php.ini : elle ne fonctionne qu’avec le module Apache mod_suphp et, sans lui, provoque une erreur 500 (Internal Server Error) sur tout le site.

Méthode 3 : le fichier .htaccess, uniquement avec mod_php

Si la ligne PHP SAPI indique apache2handler, PHP fonctionne comme module d’Apache et accepte ces directives dans le fichier .htaccess situé à la racine de WordPress. Ajoutez ces lignes en dehors du bloc compris entre # BEGIN WordPress et # END WordPress, que WordPress peut réécrire :

<IfModule mod_php.c>
	php_value upload_max_filesize 64M
	php_value post_max_size 72M
</IfModule>

Le bloc <IfModule mod_php.c>, valable pour PHP 8, évite l’erreur 500 que provoqueraient ces directives avec PHP-FPM ou CGI/FastCGI : elles y sont simplement ignorées, et c’est alors la méthode 2 qui s’applique.

Vérifier le résultat

Rechargez l’écran Médias > Ajouter un fichier média : la taille maximale indiquée doit correspondre à la plus petite de vos deux valeurs, soit 64 Mo dans cet exemple. Si un fichier dépasse encore la limite, la médiathèque affiche « … dépasse la limite de téléversement de ce site. »

Il est possible que d’autres restrictions existent au niveau de votre hébergeur. Par exemple, il est probable que la limite ait augmenté mais pas à la valeur désirée. Dans ce cas, contactez votre hébergeur.

Si vous administrez vous-même un serveur nginx, sa directive client_max_body_size, fixée à 1 Mo par défaut, bloque aussi les envois plus lourds avec une erreur 413 (Request Entity Too Large) : ajoutez par exemple client_max_body_size 72m; dans le bloc server de votre site, puis rechargez nginx.

Enfin, sur un réseau multisite, WordPress applique en plus son propre plafond, réglable dans l’administration du réseau, sous Réglages > Réglages du réseau : champ Taille maximale des fichiers téléversés, fixé à 1 500 Ko par défaut.

Autre limite fréquente à relever : augmenter la limite mémoire PHP de WordPress.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

22 réponses

  1. Avatar de Yodamasta
    Yodamasta

    Bonjour, j’ai le même problème en localhost, j’ai modifier le fichier php.ini de php admin et apache mais cela ne marche toujours pas Help svp

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Il faut contacter votre hébergeur directement.

  2. Avatar de Pierre
    Pierre

    La méthode décrite dans l’article n’a pas marché pour moi, par contre celle de Thomas dans le 1er commentaire a réussi.

    En plus c’est la plus facile, comme la page est numéro 1 pour cette recherche il faudrait changer l’article et proposer au début cette 1ere méthode !

    php_value upload_max_filesize 20M
    php_value post_max_size 20M
    php_value max_execution_time 240

  3. Avatar de Stéphane Thirion
    Stéphane Thirion

    Merci pour ces explications intéressantes

  4. Avatar de adnane
    adnane

    Pour augmenter la taille des fichier à télécharger sur wordpress : allez à www sur wampserver et
    – chercher la page php.ini sur ce chemein : C:wampbinapacheApache2.4.4bin
    – ouvrir cette page à l’aide de Notepad++
    – Cherchez upload_max_filesize = 2M
    – Changez 2M par une valeur comme vous voulez ex : upload_max_filesize = 20M
    – Enregistrer les modifications puis restart all service de appache.

  5. Avatar de dupre
    dupre

    bonjour a tous
    je désire faire mon site et l’heberger sur un pc Personnel et la je travail en local sur wordpress avec la même problématique comment dépasser 2Mo alors que je vais héberger sur le même PC ?
    merci ( je débute )

  6. Avatar de boulakarmohammed
    boulakarmohammed

    Bonjour Merci pour tuto

    pour Wamp j’ai juste modifier php.ini est ça marche par contre dans un hébergeur rien ni résultat ni affiche erreur …

  7. Avatar de سي القنديل
    سي القنديل

    Bonsoir, j’aimerais savoir comment faire avec un localhost (j’ai pas encore les couilles pour faire sur un hebergeur) ! je suis nouveau et j’arrive avec votre méthode, je travaille avec easyphp ! une aide s’il vous plait surtout pour ça  » suPHP_ConfigPath /home/protutsn/public_html/php.ini  » j’ai fais copie coller mais j’arrive pas mon fichier php.ini je l’ai créer sur C:Program Files (x86)EasyPHP-DevServer-13.1VC9php.ini

  8. Avatar de Thomas
    Thomas

    Aucun changement pour moi… Je suis chez OVH et j’ai toujours la même erreur… un peu d’aide ? 🙂 MErci !

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Changes d’hébergeur… 😉

      1. Avatar de Thomas
        Thomas

        Oui merci ^^ après quelques recherches supplémentaires, je viens de voir que c’était pas bien faisable ^^ du coup je passe par autre chose !

  9. Avatar de lydie
    lydie

    Bonjour,
    J’essaye d’installer un thème wordpress en local pour l’instant et j’ai le message d’erreur suivant « La taille du fichier envoyé excède celle indiquée dans la directive upload_max_filesize, dans php.ini. »
    Quelqu’un peut-il m’aider ? Sachant que le dossier du thème pèse 7Mo.

    Merci beaucoup

    1. Avatar de Aurore
      Aurore

      Bonjour,

      Avez-vous eu votre réponse car je suis dans le même cas.

      Merci

      1. Avatar de NxxS
        NxxS

        Up, meme soucis pour moi qui est en local (wamp). WP 3.5.1

  10. Avatar de Maude@Cesu pré-financé
    Maude@Cesu pré-financé

    Je vais peut être poser une question peu intelligente mais je vais tout de même essayer :

    Même si pour le moment le dépassement de capacité m’est pas arrivée, ne peut-on pas, comme pour d’autres envois, compresser les fichiers?

    En tous cas, tes informations pourront m’être utile, si je dépasse ces 2Mo

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Tout à fait, réduire le poids des fichiers envoyés en compressant la qualité des images ou des vidéos mais aussi des documents est une solution.

  11. Avatar de Amaury
    Amaury

    Effectivement, ta méthode n’est absolument pas générique.

    Elle ne doit pas fonctionner chez la majorité des hébergeurs mutualisés qui tiennent pas à allouer des quantités de mémoires excessives aux clients.

    La version de Thomas ne fonctionne que selon la configuration d’Apache2. La directive AllowOverride doit assez très permissive pour autoriser ces modifications « à la volée »

    1. Avatar de Aurélien Denis
      Aurélien Denis

      En effet, comme signalé en début d’article, la méthode décrite ici a fonctionné chez moi…

      Par contre, je suis preneur de toute alternative plus générale. 😉

      1. Avatar de Amaury
        Amaury

        Pas de méthode magique, cela dépend du serveur utilisé, il faut ça soit Apache2, il faut que l’installation PHP le permette (mod_php, PHP-CGI, SuPHP).

        Et ensuite, il faut que la configuration d’Apache2 le permette, soit via le .htaccess, soit via un fichier php.ini.

        Personnellement, j’aime beaucoup le principe de Webmin/VirtualMin, un fichier PHP.ini par Vhost.

        C’est vraiment très utile à l’usage.

  12. Avatar de Thomas
    Thomas

    Pour ma part, un façon plus flexible et plus rapide mais peut-être pas la meilleur est d’utiliser le fichier .htaccess et d’ajouter ceci.

    php_value upload_max_filesize 20M
    php_value post_max_size 20M
    php_value max_execution_time 240

    J’utilise ceci à chaque fois pour mes projets, je peux varier dépendament du projet.

    1. Avatar de Ture
      Ture

      Super, ca marche toujours aujourd’hui. Merci

    2. Avatar de Baroi
      Baroi

      merci