## Erreurs classiques

La variable `MAX_FILE_SIZE` ne peut pas spécifier une taille de fichier plus grande que la taille qui a été fixée par upload_max_filesize, dans le php.ini. La valeur par défaut est 2 megaoctets.

Si une limite de mémoire est activée, une plus grande valeur de memory_limit peut être nécessaire. Assurez-vous d'avoir défini une valeur pour memory_limit assez grande.

Si la valeur de max_execution_time est trop petite, le temps d'exécution du script peut excéder cette valeur. Assurez-vous d'avoir défini une valeur pour `max_execution_time` assez grande.

> Note: max_execution_time affecte uniquement le temps d'exécution du script. Le temps passé sur l'activité qui apparaît en dehors de l'exécution du script comme les appels systèmes avec la fonction system(), la fonction sleep(), les requêtes sur les bases de données, le temps mis pour effectuer le téléchargement du fichier, etc. n'est pas inclus lors du calcul du temps maximal de l'exécution du script.

Avertissement

max_input_time définit le temps maximal, en secondes, au script pour recevoir les données ; cela inclut le téléchargement du fichier. Pour les fichiers multiples, ou les gros fichiers, ou encore pour les utilisateurs sur des connexions lentes, la valeur par défaut de `60` secondes peut être dépassée.

Si post_max_size est défini de façon trop faible, les gros fichiers ne pourront pas être téléchargés. Assurez-vous de définir `post_max_size` avec une taille suffisante.

La configuration de max_file_uploads contrôle le nombre maximum de fichiers qui peuvent être envoyés en une requête. Si le nombre de fichiers envoyés dépasse cette limite, alors $_FILES arrêtera la réception. Par exemple, si max_file_uploads vaut `10`, alors $_FILES ne contiendra jamais plus de 10 entités.

Ne pas valider les fichiers que vous manipulez peut donner l'accès aux utilisateurs à des fichiers sensibles dans d'autres dossiers !

Du fait de la grande diversité des systèmes, nous ne pouvons garantir que les fichiers avec des noms exotiques (par exemple, ceux contenant des espaces) seront traités correctement.

Le développeur ne doit pas mixer les champs `input` normaux et les champs de téléchargement dans une même variable (en utilisant un nom d'`input` comme `foo[]`).