====== Serveur Web - page upload ====== {{ :dummy.png?75x75|}} Pour créer une page PHP qui reçoit un fichier envoyé depuis un script Bash, nous pouvons utiliser la méthode HTTP POST. Voici un exemple de code qui vous aidera à démarrer : Le code ci-dessus vérifie si un fichier a été envoyé via la méthode POST et utilise la fonction PHP **move_uploaded_file** pour déplacer le fichier du répertoire temporaire vers un répertoire de destination sur votre serveur. -- La création du répertoire de destination ''imports'' avec la fonction **mkdir** si celui-ci n'existe pas crée récursivement le répertoire de destination, en accordant les autorisations de lecture, d'écriture et d'exécution à tous les utilisateurs. Sauf qu'il est peut-être nécessaire de créer ce dossier en ligne de commande dans le dossier public du site : ''mkdir imports'' Le dossier ''imports'' a été créé avec un complément de droit dans le Terminal ''chmod g+w imports''. -- Si le fichier de destination existe déjà avec la fonction **file_exists**, nous utilisons la fonction **unlink** pour le supprimer avant de déplacer le nouveau fichier avec la fonction **move_uploaded_file**. Ainsi, le fichier existant sera remplacé par la nouvelle version. -- La fonction **is_dir** permet de vérifier si le répertoire de destination n'existe pas, alors nous utilisons la fonction **mkdir** pour le créer, puis nous vérifions si le répertoire a été créé avec succès avant de continuer le traitement du fichier téléchargé. Si le répertoire est créé avec succès, nous continuons avec la vérification et le traitement du fichier téléchargé, sinon nous affichons un message d'erreur et sortons du script avec la fonction **exit**. -- Nous avons utilisé une structure conditionnelle pour vérifier la valeur de ''$_FILES['file']['error']''. Si la valeur n'est pas **UPLOAD_ERR_OK**, nous affichons un message d'erreur correspondant à la valeur d'erreur spécifique. Les constantes **UPLOAD_ERR_INI_SIZE**, **UPLOAD_ERR_FORM_SIZE**, **UPLOAD_ERR_PARTIAL**, **UPLOAD_ERR_NO_FILE**, **UPLOAD_ERR_NO_TMP_DIR**, **UPLOAD_ERR_CANT_WRITE**, **UPLOAD_ERR_EXTENSION** sont des constantes prédéfinies en PHP qui indiquent les différentes erreurs de téléchargement de fichier possibles. En utilisant ce code, nous pouvons afficher un message d'erreur plus précis pour aider à résoudre le problème de téléchargement de fichier. -- Un contrôle du CRC sur un fichier téléchargé et renvoyé. Nous utilisons la fonction **hash_file** pour calculer la valeur SHA1 du fichier. La fonction **hash_file** calcule le hash d'un fichier donné à l'aide de l'algorithme de hachage spécifié. Dans notre cas, nous allons utiliser l'algorithme de hachage SHA1 pour calculer la valeur CRC du fichier. -- Nous devons également vérifier le paramétrage de PHP. * La directive **post_max_size** est définie dans un fichier de configuration différent. Nous pouvons utiliser la fonction phpinfo pour vérifier le fichier de configuration utilisé par PHP. Cherchez la ligne "Loaded Configuration File" pour trouver le fichier utilisé. La directive **post_max_size** est définie dans un niveau supérieur de la hiérarchie de configuration et ne peut pas être modifiée par la fonction **ini_set**. Par exemple, si la directive est définie dans le fichier **php.ini** global, elle ne peut pas être modifiée par **ini_set** dans un script PHP. La modification de la directive **post_max_size** nécessite un redémarrage du serveur web pour prendre effet. Assurez-vous que le serveur web a été redémarré après avoir modifié la valeur de **post_max_size** dans le fichier **php.ini**. * Nous avons également modifié la directive ''upload_max_filesize''. --- //[[user:cedricabonnel]]//