PHP : Limites d'upload

PHP impose des limites pour l'upload de fichiers. Par défaut, cette limite est de 2 megaoctets. Si vous avez un problème avec l'upload de fichiers c'est probablement parce que la taille du fichier dépasse la taille autorisée.

Propriétés

Il existe 4 propriétés :

upload_max_filesize : La taille limite des fichiers à uploader

post_max_size : La taille maximum des données envoyées avec POST. Cette limite concerne aussi les fichiers. La valeur doit être supérieure ou égale à upload_max_filesize puisque les fichiers sont uploadés avec la requête POST.

memory_limit : La mémoire limite qu'un script à le droit d'utiliser. Si vous ne voulez pas de limite, vous pouvez mettre la valeur -1 (pas recommandé). Cette limite affecte aussi l'upload des fichiers.

max_file_uploads : Le nombre limite de fichiers qui peuvent être uploadés simultanément.

Valeurs par défaut :

upload_max_filesize = 2M
post_max_size = 8M
memory_limit = 128M
max_file_uploads = 20

memory_limit doit être superieure à post_max_size. post_max_size doit être supérieur à upload_max_filesize.

Autrement dit : memory_limit > post_max_size > upload_max_filesize

Notez que ces limites sont là par mesure de sécurité.

Si vous voulez voir un récapitulatif des propriétés. Vous pouvez exécuter le script :


<?php

// Affiche toutes les informations, comme le ferait INFO_ALL
phpinfo();

// Affiche uniquement le module d'information.
// phpinfo(8) fournirait les mêmes informations.
phpinfo(INFO_MODULES);

//Montre la localisation de php.ini
echo php_ini_loaded_file();

>

php.ini

Le fichier php.ini peut se trouver dans différents dossiers selon la configuration. Vous pouvez trouver sa localisation avec le php_ini_loaded_file (cf. script ci-dessus).

Pour apache :

/etc/php/{NO_VERSION_PHP}/apache2/php.ini

Donc pour la version 7 de php :

/etc/php/7.0/apache2/php.ini

Vous pouvez modifier les valeurs et sauvegarder les modifications.

Redémarrez apache pour prendre en compte les modifications :

service httpd restart

.htaccess

Si vous n'avez pas accès au fichier php.ini, vous pouvez modifier le fichier .htaccess qui se situe à la racine du dossier avec le sftp.

php_value upload_max_filesize = 2M
php_value post_max_size = 8M
php_value memory_limit = 128M
php_value max_file_uploads = 20

Commentaires