Paramétrage Apache et PHP pour le téléchargement de fichier

Paramétrage Apache et PHP pour le téléchargement de fichier

Apache

Vérifier dans le paramétrage d’Apache, du vhost ou dans le fichier HTAccess la valeur de la variable LimitRequestBody. S’il n’est pas précisé, la valeur par défaut prime (0) ce qui vaut « illimité », autrement, la valeur possible va de 1 à 2147483647 octets (2 Go).

PHP

Les prises en compte des téléchargements sont régies par un combinaison de variables :

Valeur Description
max_file_uploads La quantité maximale de fichiers soumis dans une même session d’upload (envois en même temps vers la même page). Sa prise en charge semble très aléatoire selon les versions de php…
max_input_time La durée en secondes qu’un script est autorisé à récupérer des informations avant de démarrer l’exécution de la page
upload_max_filesize Taille maximum autorisée par fichier téléchargé.
(Si plusieurs fichiers sont envoyés, chaque fichier doit être individuellement en dessous de cette limite sans que la taille cumulée de tous les fichiers envoyés ne dépasse post_max_size)
post_max_size Taille maximum de données pouvant être envoyé au serveur (devrait être plus grand qu’upload_max_filesize)
memory_limit Quantité de mémoire maximum qu’un script peut consommer. (Devrait être supérieur à post_max_size)

Un internaute peut télécharger max_file_uploads fichiers en même temps à condition :

  • Qu’ils soient tous envoyés au serveur en moins de max_input_time secondes
  • Que la taille individuelle de chaque fichier ne dépasse pas upload_max_filesize octets
  • Que la taille cumulée de tous les fichiers ne dépasse pas post_max_size octets
  • Que si le formulaire client envoit plusieurs fichiers par le même formulaire en même temps, le formulaire doit envoyer moins de max_file_uploads fichiers en même temps

A savoir

  • Si un fichier dépasse upload_max_filesize, php rejettera le fichier en question et activera l’indicteur « error » dans le tableau de fichiers pour le fichier en question, et en récupérant cette valeur, nous pouvons identifier ce qui s’est passé pour ce fichier, en revanche les autres fichiers qui ne dépassent pas cette limite seront traités normalement.
  • Si la taille cumulée de tous les fichiers envoyés dépasse post_max_size, même si individuellement chaque fichier ne dépasse pas sa limite upload_file_size, le script affichera un warning, et certains variables POST, GET et FILES peuvent être écrasées car plus de place pour les stocker.

    Les valeurs post_max_size et upload_max_filesize peuvent dépasser et traiter des données supérieurs au memory_limit à condition de contenir moins de memory_limit octets de données au démarrage de l’issue du temps de traitement de téléchargement max_input_time.

  • Si plusieurs fichiers sont envoyés en même temps, vérifier que la valeur max_input_time est suffisamment longue pour permettre au client d’envoyer tous ses fichiers au serveur.
  • La prise en charge de la valeur max_file_uploads est parfois aléatoire et peut être ignoré par certaines versions de PHP
espaceur


ceydric