SlideShare a Scribd company logo
1 of 40
Download to read offline
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 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
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
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
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© - http://www.jmrenouard.fr 
6
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
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 tri descendant 
LightPath 2014© - http://www.jmrenouard.fr 
9
chdir: changement de répertoire courant 
getcwd: récupération du répertoire courant 
LightPath 2014© - http://www.jmrenouard.fr 
10
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
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
LightPath 2014© - http://www.jmrenouard.fr 
13
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
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
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_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
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
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
$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
$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
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
$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
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 à ligne 
◦fputs: écriture d’une ligne 
◦Fputcsv: écriture d’un tableau csv 
LightPath 2014© - http://www.jmrenouard.fr 
25
$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
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écessaires doivent être acquis 
LightPath 2014© - http://www.jmrenouard.fr 
29
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
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
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
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 fichier 
◦Mise à jour de la date de dernière modification 
LightPath 2014© - http://www.jmrenouard.fr 
34
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
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. 
Attention, les fichiers INI sont lisibles par navigateur Web. 
LightPath 2014© - http://www.jmrenouard.fr 
37
; 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
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
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

More Related Content

What's hot

Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHPJean-Marie Renouard
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLDamien Seguy
 
Formation PHP
Formation PHPFormation PHP
Formation PHPkemenaran
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en gokader15
 
Beautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirBeautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirYves Van Goethem
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1Régis Lutter
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Kristen Le Liboux
 

What's hot (20)

Javascript et JQuery
Javascript et JQueryJavascript et JQuery
Javascript et JQuery
 
Présentation de PHP
Présentation de PHPPrésentation de PHP
Présentation de PHP
 
MVC / Frameworks PHP
MVC / Frameworks PHPMVC / Frameworks PHP
MVC / Frameworks PHP
 
Configuration PHP5
Configuration PHP5Configuration PHP5
Configuration PHP5
 
SQL et MySQL
SQL et MySQLSQL et MySQL
SQL et MySQL
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
 
Les structures de données PHP5
Les structures de données PHP5Les structures de données PHP5
Les structures de données PHP5
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sql
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
Beautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirBeautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenir
 
Cours php
Cours phpCours php
Cours php
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1
 
Introduction au Jquery
Introduction au JqueryIntroduction au Jquery
Introduction au Jquery
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
 

Similar to PHP5 et les fichiers

Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afupJulien Vinber
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3Amal Abid
 
Manipulation des fichiers en C.pptx
Manipulation des fichiers en C.pptxManipulation des fichiers en C.pptx
Manipulation des fichiers en C.pptxolfaharrabi2
 
Formation Linux - Initiation
Formation Linux - InitiationFormation Linux - Initiation
Formation Linux - Initiationrobertpluss
 
Utilisation de commande chown dans kali linux
Utilisation de commande chown dans kali linuxUtilisation de commande chown dans kali linux
Utilisation de commande chown dans kali linuxImnaTech
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPjulien pauli
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyHugo Hamon
 
Gestion des disques et des permission sous Linux
Gestion des disques et des permission sous LinuxGestion des disques et des permission sous Linux
Gestion des disques et des permission sous LinuxOussama Bessrour
 
Manipulation_des_fichiers_en_C.ppsx
Manipulation_des_fichiers_en_C.ppsxManipulation_des_fichiers_en_C.ppsx
Manipulation_des_fichiers_en_C.ppsxYallaHabibi5
 
lpi 101 notes de cours
lpi 101 notes de courslpi 101 notes de cours
lpi 101 notes de coursISIG
 
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande BertrandCaron4
 
les Commandes linux/Unix (giants networks)
les Commandes linux/Unix (giants networks)les Commandes linux/Unix (giants networks)
les Commandes linux/Unix (giants networks)Souhaib El
 

Similar to PHP5 et les fichiers (20)

Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afup
 
Plein phar
Plein pharPlein phar
Plein phar
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
Manipulation des fichiers en C.pptx
Manipulation des fichiers en C.pptxManipulation des fichiers en C.pptx
Manipulation des fichiers en C.pptx
 
Commandes usuelle linux
Commandes usuelle   linuxCommandes usuelle   linux
Commandes usuelle linux
 
Php 5.3
Php 5.3Php 5.3
Php 5.3
 
Formation Linux - Initiation
Formation Linux - InitiationFormation Linux - Initiation
Formation Linux - Initiation
 
Utilisation de commande chown dans kali linux
Utilisation de commande chown dans kali linuxUtilisation de commande chown dans kali linux
Utilisation de commande chown dans kali linux
 
Hdfs
HdfsHdfs
Hdfs
 
C1 linux et intro c
C1 linux et intro cC1 linux et intro c
C1 linux et intro c
 
C1 linux et intro c
C1 linux et intro cC1 linux et intro c
C1 linux et intro c
 
Bash bonnes pratiques
Bash bonnes pratiquesBash bonnes pratiques
Bash bonnes pratiques
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Gestion des disques et des permission sous Linux
Gestion des disques et des permission sous LinuxGestion des disques et des permission sous Linux
Gestion des disques et des permission sous Linux
 
Manipulation_des_fichiers_en_C.ppsx
Manipulation_des_fichiers_en_C.ppsxManipulation_des_fichiers_en_C.ppsx
Manipulation_des_fichiers_en_C.ppsx
 
lpi 101 notes de cours
lpi 101 notes de courslpi 101 notes de cours
lpi 101 notes de cours
 
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
Robocopy : Un outil de copie sécurisée et paramétrable en ligne de commande
 
Theme 8
Theme 8Theme 8
Theme 8
 
les Commandes linux/Unix (giants networks)
les Commandes linux/Unix (giants networks)les Commandes linux/Unix (giants networks)
les Commandes linux/Unix (giants networks)
 

More from Jean-Marie Renouard

More from Jean-Marie Renouard (7)

Manuel De Securite 1.8 (Mise à jour avec DOCKER)
Manuel De Securite  1.8 (Mise à jour avec DOCKER)Manuel De Securite  1.8 (Mise à jour avec DOCKER)
Manuel De Securite 1.8 (Mise à jour avec DOCKER)
 
ManuelDeSecurite-1.7.pdf
ManuelDeSecurite-1.7.pdfManuelDeSecurite-1.7.pdf
ManuelDeSecurite-1.7.pdf
 
Manuel de sécurité Linux
Manuel de sécurité Linux Manuel de sécurité Linux
Manuel de sécurité Linux
 
Ssh cookbook v2
Ssh cookbook v2Ssh cookbook v2
Ssh cookbook v2
 
Ssh cookbook
Ssh cookbookSsh cookbook
Ssh cookbook
 
Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur LinuxManuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur Linux
 
Structure de données en PHP
Structure de données en PHPStructure de données en PHP
Structure de données en PHP
 

Recently uploaded

Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésSana REFAI
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdfSoukainaMounawir
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 

Recently uploaded (7)

JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 

PHP5 et les fichiers

  • 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. 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. 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. LightPath 2014© - http://www.jmrenouard.fr 5
  • 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. 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. LightPath 2014© - http://www.jmrenouard.fr 8
  • 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. chdir: changement de répertoire courant getcwd: récupération du répertoire courant LightPath 2014© - http://www.jmrenouard.fr 10
  • 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. 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. LightPath 2014© - http://www.jmrenouard.fr 13
  • 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. 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. LightPath 2014© - http://www.jmrenouard.fr 16
  • 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. 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. 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. $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. $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. 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. $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. LightPath 2014© - http://www.jmrenouard.fr 24
  • 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. $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. aaa,bbb,ccc,dddd 123,456,789 """aaa""","""bbb""" LightPath 2014© - http://www.jmrenouard.fr 27
  • 28. LightPath 2014© - http://www.jmrenouard.fr 28
  • 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. 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. 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. 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. LightPath 2014© - http://www.jmrenouard.fr 33
  • 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. 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. LightPath 2014© - http://www.jmrenouard.fr 36
  • 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. ; 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. 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. 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