Introduction : « Fichier trop volumineux » — une douleur familière ?
\n\nAvez-vous déjà essayé de télécharger sur un site votre photo en haute résolution, une vidéo pour un blog ou une archive ZIP avec des documents, et soudainement vu l'erreur impitoyable : « Taille maximale du fichier téléchargé dépassée » ? Si oui — vous n'êtes pas seul. Sur Stack Overflow, la question « Change the maximum upload file size » a recueilli des dizaines de milliers de vues, ce qui signifie que des centaines de milliers de développeurs (des débutants aux professionnels) se sont heurtés à ce mur.
\n\nSur le portail éducatif PythonLib, nous apprenons non seulement à copier du code, mais à comprendre comment tout fonctionne de l'intérieur. Aujourd'hui, nous allons expliquer simplement, avec des exemples concrets, comment modifier la limite de téléchargement en PHP. Vous découvrirez où se cachent les paramètres, pourquoi ils ne fonctionnent pas toujours et comment contourner les pièges les plus courants. C'est parti !
\n\nPourquoi PHP ne permet-il pas de télécharger de gros fichiers ?
\n\nPar défaut, PHP est plutôt modeste. Il autorise le téléchargement de fichiers d'une taille maximale de 2 mégaoctets (et dans certaines anciennes versions, encore moins). Cela a été fait pour des raisons de sécurité : imaginez qu'un attaquant télécharge un fichier d'un gigaoctet sur votre serveur et fasse planter le site. Mais pour des tâches légitimes (comme le téléchargement d'un portfolio ou d'une leçon vidéo), c'est catastrophiquement insuffisant.
\n\nD'où vient la limite ? La réponse provient de trois directives principales dans la configuration de PHP :
\n\n- \n
upload_max_filesize— la taille maximale d'un seul fichier téléchargé. \n post_max_size— la taille maximale de toutes les données envoyées par la méthode POST (y compris les fichiers et les champs de texte du formulaire). \n max_execution_time— le temps que PHP peut consacrer à l'exécution du script (le téléchargement d'un gros fichier peut prendre plusieurs minutes). \n
Si vous augmentez uniquement upload_max_filesize mais oubliez post_max_size, le téléchargement échouera quand même avec une erreur. C'est comme essayer de mettre un éléphant dans un coffre alors que le coffre est plus petit que l'éléphant. Ou comme avoir une grande boîte (le fichier) mais une fente de boîte aux lettres (post_max_size) trop étroite.
Où se trouvent les paramètres PHP ? Trois chemins vers le succès
\n\nVous avez trois façons de modifier la taille maximale des fichiers téléchargés. Le choix dépend de votre hébergement et de votre niveau d'accès. Examinons chacune.
\n\nMéthode 1. Modifier php.ini (l'étalon-or)
\n\nLe fichier php.ini est le principal « panneau de contrôle » de PHP. Si vous avez accès au serveur (VPS, serveur dédié ou ordinateur local), c'est la méthode la plus fiable.
Trouvez votre php.ini. Il se trouve généralement dans :
- \n
- Linux :
/etc/php/8.x/apache2/php.iniou/etc/php/8.x/cli/php.ini\n - Windows :
C:\\xampp\\php\\php.ini(pour XAMPP) ouC:\\wamp64\\bin\\php\\php8.x\\php.ini\n
Ouvrez le fichier et trouvez (ou ajoutez) les lignes suivantes :
\n\n; Taille maximale d'un seul fichier (maintenant 50 Mo)\nupload_max_filesize = 50M\n\n; Taille maximale de toutes les données POST (doit être supérieure ou égale à upload_max_filesize)\npost_max_size = 64M\n\n; Temps d'exécution maximal du script en secondes (pour les gros fichiers, augmentez à 300)\nmax_execution_time = 300\n\n; Temps maximal pour recevoir les données (recommandé : au moins 5 minutes)\nmax_input_time = 300\n\n; Mémoire par script (si le fichier est volumineux, augmentez à 128M ou 256M)\nmemory_limit = 128M\n\nAprès les modifications, redémarrez impérativement le serveur web :
\nsudo systemctl restart apache2 # pour Apache\nsudo systemctl restart nginx # pour Nginx\n\nVoilà ! Désormais, votre site peut accepter des fichiers jusqu'à 50 Mo. Mais rappelez-vous : post_max_size doit toujours être de quelques mégaoctets supérieur à upload_max_filesize pour laisser de la place aux en-têtes de formulaire.