Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP5 et les fichiers

3,911 views

Published on

Présentation de la gestion des fichiers avec PHP 5

Published in: Engineering
  • Login to see the comments

  • Be the first to like this

PHP5 et les fichiers

  1. 1. Jean-Marie Renouard LightPath 2014©
  2. 2. Le logo PHP est du domaine public http://commons.wikimedia.org/wiki/File:PHP-logo.svg Ce document est licencié sous licence ◦Attribution-NonCommercial-ShareAlike ◦CC BY-NC-SA Plus de détails: http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ LightPath 2014© - http://www.jmrenouard.fr 2
  3. 3. Support de format de fichier Parcours de répertoire Recherche des propriétés d’un fichier Lecture d’un fichier Écriture dans un fichier LightPath 2014© - http://www.jmrenouard.fr 3
  4. 4. Suppression d’un fichier Copie d’un fichier Fichier temporaire Création d’un fichier vide Analyse d’un fichier de configuration LightPath 2014© - http://www.jmrenouard.fr 4
  5. 5. LightPath 2014© - http://www.jmrenouard.fr 5
  6. 6. Douzaine de formats supportés Accès à distance possible Accès aux formats compressés Syntaxe simple LightPath 2014© - http://www.jmrenouard.fr 6
  7. 7. file:// Fichier sur le disque http:// Fichier sur un serveur Web HTTP ftp:// Fichier sur un serveur FTP php:// Fichier spéciaux PHP ◦Entrée standard ◦Sortie standard ◦Sortie d’erreur ◦Mémoire ◦Zone Temporaire zlib:// Fichier compressé data:// Données au format URL glob:// Expression régulière de recherche phar:// Archive PHAR, standard PHP ssh2:// Fichier accessible depuis un serveur SSH rar:// Fichier archive RAR ogg:// Fichier de musique au format OGG expect:// Données depuis un processus interactif LightPath 2014© - http://www.jmrenouard.fr 7
  8. 8. LightPath 2014© - http://www.jmrenouard.fr 8
  9. 9. Tri alphabétique Scandir($rep) ◦ récupération des noms de fichier et sous répertoires. Scandir($rep, 1) ◦Idem avec tri descendant LightPath 2014© - http://www.jmrenouard.fr 9
  10. 10. chdir: changement de répertoire courant getcwd: récupération du répertoire courant LightPath 2014© - http://www.jmrenouard.fr 10
  11. 11. glob($motif, $option) Recherche selon un motif foreach (glob("*.txt") as $filename) { echo "$filename size " . filesize($filename) . "n"; } LightPath 2014© - http://www.jmrenouard.fr 11
  12. 12. GLOB_MARK : Ajoute un slash final à chaque dossier retourné GLOB_NOSORT : Retourne les fichiers dans l'ordre initial GLOB_NOESCAPE : Aucun protection de caractère GLOB_ONLYDIR : Ne retourne que les dossiers GLOB_ERR : Stop lors d'une erreur LightPath 2014© - http://www.jmrenouard.fr 12
  13. 13. LightPath 2014© - http://www.jmrenouard.fr 13
  14. 14. basename : Nom du fichier dirname : Chemin du fichier fstat : Informations du fichier fileatime : Date de dernier accès filectime : Date de dernier accès à l’inode filemtime : Date de dernier modification fileowner : Identifiant du propriétaire filegroup : Identifiant du propriétaire fileinode : Numéro d'inode du fichier fileperms : Droits d'un fichier filesize : Taille d'un fichier filetype : Type de fichier LightPath 2014© - http://www.jmrenouard.fr 14
  15. 15. is_dir : true si le fichier est un dossier is_executable : true si le fichier est exécutable is_file : true si le fichier est un fichier régulier is_link : true si le fichier est un lien symbolique is_readable : true si un fichier existe et est accessible en lecture is_uploaded_file : true si le fichier a été téléchargé par HTTP POST is_writable/is_writeable : true si un fichier est accessible en écriture file_exists : true si le fichier existe. LightPath 2014© - http://www.jmrenouard.fr 15
  16. 16. LightPath 2014© - http://www.jmrenouard.fr 16
  17. 17. file($fich, $option) ◦Tableau de ligne du fichier Option FILE_USE_INCLUDE_PATH : ◦Recherche le fichier dans l‘include_path. Option FILE_IGNORE_NEW_LINES : ◦Pas de saut de ligne à la fin des éléments Option FILE_SKIP_EMPTY_LINES : ◦Ignore les lignes vides. LightPath 2014© - http://www.jmrenouard.fr 17
  18. 18. file_get_contents: lecture dans une chaîne de caractère Lecture et recherche dans l’include_path: $file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH) . Lecture de n caractères à partir de x caractères $section = file_get_contents('./people.txt', NULL, NULL, $n, $x); LightPath 2014© - http://www.jmrenouard.fr 18
  19. 19. Fonctions de gestion de l’état du fichier ◦fopen : ouverture du fichier ◦fclose : fermeture du fichier ◦flock : verrouillage le fichier Fonction de lecture ligne à ligne ◦fgets : récupération de la ligne courante ◦fgetss : idem avec nettoyage HTML ◦fgetcsv: idem avec découpage par délimiteur LightPath 2014© - http://www.jmrenouard.fr 19
  20. 20. $handle = @fopen("/tmp/inputfile.txt", "r"); $i=1; if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { echo $i++. ») « .$buffer; } if (!feof($handle)) { echo "Erreur: fgets() a échouén"; } fclose($handle); } LightPath 2014© - http://www.jmrenouard.fr 20
  21. 21. $handle = @fopen(« http://www.perdu.com", "r"); if ($handle) { while (($buffer = fgetss($handle, 4096)) !== false) { echo $buffer; } if (!feof($handle)) { echo "Erreur: fgetss() a échouén"; } fclose($handle); } LightPath 2014© - http://www.jmrenouard.fr 21
  22. 22. function csv_file_to_mysql_table($source_file, $target_table) { if (($handle = fopen("$source_file", "r")) === FALSE) { return; } $columns = fgetcsv($handle, 4096, ","); $query_prefix = "INSERT INTO $target_table (".join(",",$columns).")nVALUES"; while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) { $query = "$query_prefix (".join(",", $data).");"; } fclose($handle); } LightPath 2014© - http://www.jmrenouard.fr 22
  23. 23. $fp = fopen("/tmp/lock.txt", "r+"); Verrouillage exclusif :Lecture et écriture ◦flock($fp, LOCK_EX); Verrouillage partagé: écriture seule ◦ flock($fp, LOCK_SH); Déverrouillage :Lecture et écriture ◦flock($fp, LOCK_UN); fclose($fp) LightPath 2014© - http://www.jmrenouard.fr 23
  24. 24. LightPath 2014© - http://www.jmrenouard.fr 24
  25. 25. file_put_contents($fichier, $data) ◦Écriture des données $data dans le fichier $fichier Possibilité d’écrire ligne à ligne ◦fputs: écriture d’une ligne ◦Fputcsv: écriture d’un tableau csv LightPath 2014© - http://www.jmrenouard.fr 25
  26. 26. $list = array ( array('aaa', 'bbb', 'ccc', 'dddd'), array('123', '456', '789'), array('"aaa"', '"bbb"') ); $fp = fopen('file.csv', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } fclose($fp); LightPath 2014© - http://www.jmrenouard.fr 26
  27. 27. aaa,bbb,ccc,dddd 123,456,789 """aaa""","""bbb""" LightPath 2014© - http://www.jmrenouard.fr 27
  28. 28. LightPath 2014© - http://www.jmrenouard.fr 28
  29. 29. Unlink : suppression d’un fichier rmdir: suppression d’un répertoire Le répertoire doit être vide. Les droits nécessaires doivent être acquis LightPath 2014© - http://www.jmrenouard.fr 29
  30. 30. Suppression de tous les fichiers .jpg $mask = « *.jpg » ; array_map( "unlink", glob( $mask ) ); Suppression de tous les fichiers array_map( "unlink", glob( « * » ) ); Suppression de tous les fichiers des sous répertoires array_map( "unlink", glob( « */* » ) ); LightPath 2014© - http://www.jmrenouard.fr 30
  31. 31. function recursiveDelete($str){ if(is_file($str)){ return @unlink($str); } elseif(is_dir($str)){ $scan = glob(rtrim($str,'/').'/*'); foreach($scan as $index=>$path){ recursiveDelete($path); } return @rmdir($str); } } LightPath 2014© - http://www.jmrenouard.fr 31
  32. 32. copy($file, $copy): ◦copie de fichier ◦Duplication du contenu Attention à la durée rename: ◦renommage de fichier ◦ Pas de copie de donnée LightPath 2014© - http://www.jmrenouard.fr 32
  33. 33. LightPath 2014© - http://www.jmrenouard.fr 33
  34. 34. touch: ◦création d’un fichier vide ◦Mise à jour de la date de dernière modification ftruncate ◦Vide le contenu du fichier ◦Mise à jour de la date de dernière modification LightPath 2014© - http://www.jmrenouard.fr 34
  35. 35. tmpfile: création d’un fichier temporaire fclose provoque la suppression du ficher temporaire. tmpnam: création d’un nom unique pour fichier temporaire sys_get_temp_dir : récupération du répertoire temporaire du système. LightPath 2014© - http://www.jmrenouard.fr 35
  36. 36. LightPath 2014© - http://www.jmrenouard.fr 36
  37. 37. parse_ini_file: analyse le fichier de configuration format INI. 2ème paramètre: True si création de sous tableau. Attention, les fichiers INI sont lisibles par navigateur Web. LightPath 2014© - http://www.jmrenouard.fr 37
  38. 38. ; Ceci est un fichier de configuration ; Les commentaires commencent par ';', comme dans php.ini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = "/usr/local/bin" URL = http://www.example.com/~username [third_section] phpversion[] = "5.0" phpversion[] = "5.1" phpversion[] = "5.2" phpversion[] = "5.3" LightPath 2014© - http://www.jmrenouard.fr 38
  39. 39. print_r(parse_ini_file($ini_file, true)); Array ( ◦[first_section] => Array ( [one] => 1 [five] => 5 [animal] => Dodo bird ) ◦[second_section] => Array ( [path] => /usr/local/bin [URL] => http://www.example.com/~username ) ◦[third_section] => Array ( [phpversion] => Array ( [0] => 5.0 [1] => 5.1 [2] => 5.2 [3] => 5.3 )  ) LightPath 2014© - http://www.jmrenouard.fr 39
  40. 40. LightPath: ◦Société de conseil et d’ingénierie ◦Formations, Conseil, Audit et mise en oeuvre ◦jmrenouard@lightpath.fr Jean-Marie RENOUARD ◦jmrenouard@gmail.com ◦Twitter: @jmrenouard ◦http://www.jmrenouard.fr LightPath 2014© - http://www.jmrenouard.fr 40

×