Paramètres à vérifier pour l'upload de fichiers avec PHP

Pour uploader un gros fichier avec PHP, vous devez vérifier un certain nombre de paramètres de configuration et vous assurer que votre formulaire est correct. Voici une liste que j'espère exhaustive des points à vérifier :

Fichier php.ini

  1. file_uploads doit être à On pour autoriser les envois de fichiers.
  2. max_file_uploads doit correspondre au nombre maximum de fichiers pouvant être envoyés simultanément. Cette option est disponible depuis PHP 5.2.12.
  3. upload_max_filesize doit correspondre à la taille maximale des fichiers qui peuvent être envoyés.
  4. post_max_size doit être à supérieur à upload_max_filesize puisque tous les champs du formulaire sont inclus dans cette taille.
  5. max_input_time doit correspondre au temps maximum alloué à PHP pour traiter les données en entrée.
  6. max_execution_time doit correspondre au temps maximal d'exécution du script.Doit être supérieur à max_input_time.
  7. upload_tmp_dir doit correspondre à un répertoire où PHP a les droits pour écrire.
  8. memory_limit doit être supérieur à la taille des fichiers à traiter.

Mise à jour du 31/12/2010 : max_input_time n'aurait à priori pas d'influence sur l'upload des fichiers (voir commentaires ci-dessous).

Formulaire

  1. L'attribut enctype de la balise form doit être positionné à multipart/form-data.
  2. La valeur du champ caché MAX_FILE_SIZE doit être égal à upload_max_filesize.

Serveur WEB

Il faut également vérifier qu'il n'y a pas de limitation en place au niveau de votre serveur WEB. Par exemple dans Nginx, il faut contrôler la directive client_max_body_size