Jean-Marie Renouard 
LightPath 2014©
Le logo PHP est du domaine public 
http://commons.wikimedia.org/wiki/File:PHP-logo.svg 
Ce document est licencié sous l...
Support de format de fichier 
Parcours de répertoire 
Recherche des propriétés d’un fichier 
Lecture d’un fichier 
Éc...
Suppression d’un fichier 
Copie d’un fichier 
Fichier temporaire 
Création d’un fichier vide 
Analyse d’un fichier de...
LightPath 2014© - http://www.jmrenouard.fr 
5
Douzaine de formats supportés 
Accès à distance possible 
Accès aux formats compressés 
Syntaxe simple 
LightPath 2014...
file:// Fichier sur le disque 
http:// Fichier sur un serveur Web HTTP 
ftp:// Fichier sur un serveur FTP 
php:// Fich...
LightPath 2014© - http://www.jmrenouard.fr 
8
Tri alphabétique 
Scandir($rep) 
◦ récupération des noms de fichier et sous répertoires. 
Scandir($rep, 1) 
◦Idem avec ...
chdir: changement de répertoire courant 
getcwd: récupération du répertoire courant 
LightPath 2014© - http://www.jmreno...
glob($motif, $option) 
Recherche selon un motif 
foreach (glob("*.txt") as $filename) { echo "$filename size " . filesiz...
GLOB_MARK : Ajoute un slash final à chaque dossier retourné 
GLOB_NOSORT : Retourne les fichiers dans l'ordre initial 
...
LightPath 2014© - http://www.jmrenouard.fr 
13
basename : Nom du fichier 
dirname : Chemin du fichier 
fstat : Informations du fichier 
fileatime : Date de dernier a...
is_dir : true si le fichier est un dossier 
is_executable : true si le fichier est exécutable 
is_file : true si le fic...
LightPath 2014© - http://www.jmrenouard.fr 
16
file($fich, $option) 
◦Tableau de ligne du fichier 
Option FILE_USE_INCLUDE_PATH : 
◦Recherche le fichier dans l‘include...
file_get_contents: lecture dans une chaîne de caractère 
Lecture et recherche dans l’include_path: 
$file = file_get_co...
Fonctions de gestion de l’état du fichier 
◦fopen : ouverture du fichier 
◦fclose : fermeture du fichier 
◦flock : verrou...
$handle = @fopen("/tmp/inputfile.txt", "r"); 
$i=1; 
if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { e...
$handle = @fopen(« http://www.perdu.com", "r"); 
if ($handle) { while (($buffer = fgetss($handle, 4096)) !== false) { echo...
function csv_file_to_mysql_table($source_file, $target_table) { if (($handle = fopen("$source_file", "r")) === FALSE) { re...
$fp = fopen("/tmp/lock.txt", "r+"); 
Verrouillage exclusif :Lecture et écriture 
◦flock($fp, LOCK_EX); 
Verrouillage pa...
LightPath 2014© - http://www.jmrenouard.fr 
24
file_put_contents($fichier, $data) 
◦Écriture des données $data dans le fichier $fichier 
Possibilité d’écrire ligne à l...
$list = array ( array('aaa', 'bbb', 'ccc', 'dddd'), array('123', '456', '789'), array('"aaa"', '"bbb"') ); $fp = fopen('fi...
aaa,bbb,ccc,dddd 
123,456,789 
"""aaa""","""bbb""" 
LightPath 2014© - http://www.jmrenouard.fr 
27
LightPath 2014© - http://www.jmrenouard.fr 
28
Unlink : suppression d’un fichier 
rmdir: suppression d’un répertoire 
Le répertoire doit être vide. 
Les droits néces...
Suppression de tous les fichiers .jpg 
$mask = « *.jpg » ; array_map( "unlink", glob( $mask ) ); 
Suppression de tous le...
function recursiveDelete($str){ if(is_file($str)){ return @unlink($str); } elseif(is_dir($str)){ $scan = glob(rtrim($str,...
copy($file, $copy): 
◦copie de fichier 
◦Duplication du contenu 
Attention à la durée 
rename: 
◦renommage de fichier 
...
LightPath 2014© - http://www.jmrenouard.fr 
33
touch: 
◦création d’un fichier vide 
◦Mise à jour de la date de dernière modification 
ftruncate 
◦Vide le contenu du fi...
tmpfile: création d’un fichier temporaire 
fclose provoque la suppression du ficher temporaire. 
tmpnam: création d’un ...
LightPath 2014© - http://www.jmrenouard.fr 
36
parse_ini_file: analyse le fichier de configuration format INI. 
2ème paramètre: True si création de sous tableau. 
Att...
; Ceci est un fichier de configuration 
; Les commentaires commencent par ';', comme dans php.ini 
[first_section] 
one = ...
print_r(parse_ini_file($ini_file, true)); 
Array ( 
◦[first_section] => Array ( 
[one] => 1 
[five] => 5 
[animal] =>...
LightPath: 
◦Société de conseil et d’ingénierie 
◦Formations, Conseil, Audit et mise en oeuvre 
◦jmrenouard@lightpath.fr ...
Prochain SlideShare
Chargement dans…5
×

PHP5 et les fichiers

738 vues

Publié le

Présentation de la gestion des fichiers avec PHP 5

Publié dans : Ingénierie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
738
Sur SlideShare
0
Issues des intégrations
0
Intégrations
149
Actions
Partages
0
Téléchargements
24
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

×