40
Jean-Marie Renouard LightPath 2014©

PHP5 et les fichiers

Embed Size (px)

DESCRIPTION

Présentation de la gestion des fichiers avec PHP 5

Citation preview

Page 1: PHP5 et les fichiers

Jean-Marie Renouard LightPath 2014copy

Le logo PHP est du domaine public httpcommonswikimediaorgwikiFilePHP-logosvg

Ce document est licencieacute sous licence Attribution-NonCommercial-ShareAlike

CC BY-NC-SA

Plus de deacutetails httpcreativecommonsorglicensesby-nc-sa30fr

LightPath 2014copy - httpwwwjmrenouardfr 2

Support de format de fichier

Parcours de reacutepertoire

Recherche des proprieacuteteacutes drsquoun fichier

Lecture drsquoun fichier

Eacutecriture dans un fichier

LightPath 2014copy - httpwwwjmrenouardfr 3

Suppression drsquoun fichier

Copie drsquoun fichier

Fichier temporaire

Creacuteation drsquoun fichier vide

Analyse drsquoun fichier de configuration

LightPath 2014copy - httpwwwjmrenouardfr 4

LightPath 2014copy - httpwwwjmrenouardfr 5

Douzaine de formats supporteacutes

Accegraves agrave distance possible

Accegraves aux formats compresseacutes

Syntaxe simple

LightPath 2014copy - httpwwwjmrenouardfr 6

file Fichier sur le disque

http Fichier sur un serveur Web HTTP

ftp Fichier sur un serveur FTP

php Fichier speacuteciaux PHP Entreacutee standard Sortie standard Sortie drsquoerreur Meacutemoire Zone Temporaire

zlib Fichier compresseacute

data Donneacutees au format URL

glob Expression reacuteguliegravere 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 Donneacutees depuis un processus interactif

LightPath 2014copy - httpwwwjmrenouardfr 7

LightPath 2014copy - httpwwwjmrenouardfr 8

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 2: PHP5 et les fichiers

Le logo PHP est du domaine public httpcommonswikimediaorgwikiFilePHP-logosvg

Ce document est licencieacute sous licence Attribution-NonCommercial-ShareAlike

CC BY-NC-SA

Plus de deacutetails httpcreativecommonsorglicensesby-nc-sa30fr

LightPath 2014copy - httpwwwjmrenouardfr 2

Support de format de fichier

Parcours de reacutepertoire

Recherche des proprieacuteteacutes drsquoun fichier

Lecture drsquoun fichier

Eacutecriture dans un fichier

LightPath 2014copy - httpwwwjmrenouardfr 3

Suppression drsquoun fichier

Copie drsquoun fichier

Fichier temporaire

Creacuteation drsquoun fichier vide

Analyse drsquoun fichier de configuration

LightPath 2014copy - httpwwwjmrenouardfr 4

LightPath 2014copy - httpwwwjmrenouardfr 5

Douzaine de formats supporteacutes

Accegraves agrave distance possible

Accegraves aux formats compresseacutes

Syntaxe simple

LightPath 2014copy - httpwwwjmrenouardfr 6

file Fichier sur le disque

http Fichier sur un serveur Web HTTP

ftp Fichier sur un serveur FTP

php Fichier speacuteciaux PHP Entreacutee standard Sortie standard Sortie drsquoerreur Meacutemoire Zone Temporaire

zlib Fichier compresseacute

data Donneacutees au format URL

glob Expression reacuteguliegravere 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 Donneacutees depuis un processus interactif

LightPath 2014copy - httpwwwjmrenouardfr 7

LightPath 2014copy - httpwwwjmrenouardfr 8

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 3: PHP5 et les fichiers

Support de format de fichier

Parcours de reacutepertoire

Recherche des proprieacuteteacutes drsquoun fichier

Lecture drsquoun fichier

Eacutecriture dans un fichier

LightPath 2014copy - httpwwwjmrenouardfr 3

Suppression drsquoun fichier

Copie drsquoun fichier

Fichier temporaire

Creacuteation drsquoun fichier vide

Analyse drsquoun fichier de configuration

LightPath 2014copy - httpwwwjmrenouardfr 4

LightPath 2014copy - httpwwwjmrenouardfr 5

Douzaine de formats supporteacutes

Accegraves agrave distance possible

Accegraves aux formats compresseacutes

Syntaxe simple

LightPath 2014copy - httpwwwjmrenouardfr 6

file Fichier sur le disque

http Fichier sur un serveur Web HTTP

ftp Fichier sur un serveur FTP

php Fichier speacuteciaux PHP Entreacutee standard Sortie standard Sortie drsquoerreur Meacutemoire Zone Temporaire

zlib Fichier compresseacute

data Donneacutees au format URL

glob Expression reacuteguliegravere 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 Donneacutees depuis un processus interactif

LightPath 2014copy - httpwwwjmrenouardfr 7

LightPath 2014copy - httpwwwjmrenouardfr 8

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 4: PHP5 et les fichiers

Suppression drsquoun fichier

Copie drsquoun fichier

Fichier temporaire

Creacuteation drsquoun fichier vide

Analyse drsquoun fichier de configuration

LightPath 2014copy - httpwwwjmrenouardfr 4

LightPath 2014copy - httpwwwjmrenouardfr 5

Douzaine de formats supporteacutes

Accegraves agrave distance possible

Accegraves aux formats compresseacutes

Syntaxe simple

LightPath 2014copy - httpwwwjmrenouardfr 6

file Fichier sur le disque

http Fichier sur un serveur Web HTTP

ftp Fichier sur un serveur FTP

php Fichier speacuteciaux PHP Entreacutee standard Sortie standard Sortie drsquoerreur Meacutemoire Zone Temporaire

zlib Fichier compresseacute

data Donneacutees au format URL

glob Expression reacuteguliegravere 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 Donneacutees depuis un processus interactif

LightPath 2014copy - httpwwwjmrenouardfr 7

LightPath 2014copy - httpwwwjmrenouardfr 8

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 5: PHP5 et les fichiers

LightPath 2014copy - httpwwwjmrenouardfr 5

Douzaine de formats supporteacutes

Accegraves agrave distance possible

Accegraves aux formats compresseacutes

Syntaxe simple

LightPath 2014copy - httpwwwjmrenouardfr 6

file Fichier sur le disque

http Fichier sur un serveur Web HTTP

ftp Fichier sur un serveur FTP

php Fichier speacuteciaux PHP Entreacutee standard Sortie standard Sortie drsquoerreur Meacutemoire Zone Temporaire

zlib Fichier compresseacute

data Donneacutees au format URL

glob Expression reacuteguliegravere 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 Donneacutees depuis un processus interactif

LightPath 2014copy - httpwwwjmrenouardfr 7

LightPath 2014copy - httpwwwjmrenouardfr 8

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 6: PHP5 et les fichiers

Douzaine de formats supporteacutes

Accegraves agrave distance possible

Accegraves aux formats compresseacutes

Syntaxe simple

LightPath 2014copy - httpwwwjmrenouardfr 6

file Fichier sur le disque

http Fichier sur un serveur Web HTTP

ftp Fichier sur un serveur FTP

php Fichier speacuteciaux PHP Entreacutee standard Sortie standard Sortie drsquoerreur Meacutemoire Zone Temporaire

zlib Fichier compresseacute

data Donneacutees au format URL

glob Expression reacuteguliegravere 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 Donneacutees depuis un processus interactif

LightPath 2014copy - httpwwwjmrenouardfr 7

LightPath 2014copy - httpwwwjmrenouardfr 8

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 7: PHP5 et les fichiers

file Fichier sur le disque

http Fichier sur un serveur Web HTTP

ftp Fichier sur un serveur FTP

php Fichier speacuteciaux PHP Entreacutee standard Sortie standard Sortie drsquoerreur Meacutemoire Zone Temporaire

zlib Fichier compresseacute

data Donneacutees au format URL

glob Expression reacuteguliegravere 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 Donneacutees depuis un processus interactif

LightPath 2014copy - httpwwwjmrenouardfr 7

LightPath 2014copy - httpwwwjmrenouardfr 8

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 8: PHP5 et les fichiers

LightPath 2014copy - httpwwwjmrenouardfr 8

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 9: PHP5 et les fichiers

Tri alphabeacutetique

Scandir($rep) reacutecupeacuteration des noms de fichier et sous

reacutepertoires

Scandir($rep 1) Idem avec tri descendant

LightPath 2014copy - httpwwwjmrenouardfr 9

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 10: PHP5 et les fichiers

chdir changement de reacutepertoire courant

getcwd reacutecupeacuteration du reacutepertoire courant

LightPath 2014copy - httpwwwjmrenouardfr 10

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 11: PHP5 et les fichiers

glob($motif $option)

Recherche selon un motif

foreach (glob(txt) as $filename)

echo $filename size filesize($filename) n

LightPath 2014copy - httpwwwjmrenouardfr 11

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 12: PHP5 et les fichiers

GLOB_MARK Ajoute un slash final agrave chaque dossier retourneacute

GLOB_NOSORT Retourne les fichiers dans lordre initial

GLOB_NOESCAPE Aucun protection de caractegravere

GLOB_ONLYDIR Ne retourne que les dossiers

GLOB_ERR Stop lors dune erreur

LightPath 2014copy - httpwwwjmrenouardfr 12

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 13: PHP5 et les fichiers

LightPath 2014copy - httpwwwjmrenouardfr 13

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 14: PHP5 et les fichiers

basename Nom du fichier dirname Chemin du fichier fstat Informations du fichier fileatime Date de dernier accegraves filectime Date de dernier accegraves agrave lrsquoinode filemtime Date de dernier modification fileowner Identifiant du proprieacutetaire filegroup Identifiant du proprieacutetaire fileinode Numeacutero dinode du fichier fileperms Droits dun fichier filesize Taille dun fichier filetype Type de fichier

LightPath 2014copy - httpwwwjmrenouardfr 14

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 15: PHP5 et les fichiers

is_dir true si le fichier est un dossier

is_executable true si le fichier est exeacutecutable

is_file true si le fichier est un fichier reacutegulier

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 eacuteteacute teacuteleacutechargeacute par HTTP POST

is_writableis_writeable true si un fichier est accessible en eacutecriture

file_exists true si le fichier existe

LightPath 2014copy - httpwwwjmrenouardfr 15

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 16: PHP5 et les fichiers

LightPath 2014copy - httpwwwjmrenouardfr 16

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 17: PHP5 et les fichiers

file($fich $option) Tableau de ligne du fichier

Option FILE_USE_INCLUDE_PATH

Recherche le fichier dans llsquoinclude_path

Option FILE_IGNORE_NEW_LINES Pas de saut de ligne agrave la fin des eacuteleacutements

Option FILE_SKIP_EMPTY_LINES Ignore les lignes vides

LightPath 2014copy - httpwwwjmrenouardfr 17

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 18: PHP5 et les fichiers

file_get_contents lecture dans une chaicircne de caractegravere

Lecture et recherche dans lrsquoinclude_path $file = file_get_contents(peopletxt FILE_USE_INCLU

DE_PATH)

Lecture de n caractegraveres agrave partir de x caractegraveres

$section = file_get_contents(peopletxt NULL NULL $n $x)

LightPath 2014copy - httpwwwjmrenouardfr 18

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 19: PHP5 et les fichiers

Fonctions de gestion de lrsquoeacutetat du fichier fopen ouverture du fichier fclose fermeture du fichier flock verrouillage le fichier

Fonction de lecture ligne agrave ligne

fgets reacutecupeacuteration de la ligne courante fgetss idem avec nettoyage HTML fgetcsv idem avec deacutecoupage par deacutelimiteur

LightPath 2014copy - httpwwwjmrenouardfr 19

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 20: PHP5 et les fichiers

$handle = fopen(tmpinputfiletxt r)

$i=1

if ($handle) while (($buffer = fgets($handle 4096)) == false) echo $i++ raquo) laquo $buffer if (feof($handle)) echo Erreur fgets() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 20

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 21: PHP5 et les fichiers

$handle = fopen(laquo httpwwwperducom r)

if ($handle) while (($buffer = fgetss($handle 4096)) == false) echo $buffer if (feof($handle)) echo Erreur fgetss() a eacutechoueacuten fclose($handle)

LightPath 2014copy - httpwwwjmrenouardfr 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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 22: PHP5 et les fichiers

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 2014copy - httpwwwjmrenouardfr 22

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 23: PHP5 et les fichiers

$fp = fopen(tmplocktxt r+)

Verrouillage exclusif Lecture et eacutecriture flock($fp LOCK_EX)

Verrouillage partageacute eacutecriture seule flock($fp LOCK_SH)

Deacuteverrouillage Lecture et eacutecriture flock($fp LOCK_UN)

fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 23

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 24: PHP5 et les fichiers

LightPath 2014copy - httpwwwjmrenouardfr 24

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 25: PHP5 et les fichiers

file_put_contents($fichier $data) Eacutecriture des donneacutees $data dans le fichier $fichier

Possibiliteacute drsquoeacutecrire ligne agrave ligne fputs eacutecriture drsquoune ligne

Fputcsv eacutecriture drsquoun tableau csv

LightPath 2014copy - httpwwwjmrenouardfr 25

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 26: PHP5 et les fichiers

$list = array ( array(aaa bbb ccc dddd) array(123 456 789) array(aaa bbb) ) $fp = fopen(filecsv w) foreach ($list as $fields) fputcsv($fp $fields) fclose($fp)

LightPath 2014copy - httpwwwjmrenouardfr 26

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 27: PHP5 et les fichiers

aaabbbcccdddd

123456789

aaabbb

LightPath 2014copy - httpwwwjmrenouardfr 27

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 28: PHP5 et les fichiers

LightPath 2014copy - httpwwwjmrenouardfr 28

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 29: PHP5 et les fichiers

Unlink suppression drsquoun fichier

rmdir suppression drsquoun reacutepertoire

Le reacutepertoire doit ecirctre vide

Les droits neacutecessaires doivent ecirctre acquis

LightPath 2014copy - httpwwwjmrenouardfr 29

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 30: PHP5 et les fichiers

Suppression de tous les fichiers jpg

$mask = laquo jpg raquo array_map( unlink glob( $mask ) )

Suppression de tous les fichiers array_map( unlink glob( laquo raquo ) )

Suppression de tous les fichiers des sous reacutepertoires array_map( unlink glob( laquo raquo ) )

LightPath 2014copy - httpwwwjmrenouardfr 30

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 31: PHP5 et les fichiers

function recursiveDelete($str) if(is_file($str)) return unlink($str) elseif(is_dir($str)) $scan = glob(rtrim($str)) foreach($scan as $index=gt$path) recursiveDelete($path) return rmdir($str)

LightPath 2014copy - httpwwwjmrenouardfr 31

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 32: PHP5 et les fichiers

copy($file $copy) copie de fichier

Duplication du contenu

Attention agrave la dureacutee

rename renommage de fichier

Pas de copie de donneacutee

LightPath 2014copy - httpwwwjmrenouardfr 32

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 33: PHP5 et les fichiers

LightPath 2014copy - httpwwwjmrenouardfr 33

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 34: PHP5 et les fichiers

touch creacuteation drsquoun fichier vide

Mise agrave jour de la date de derniegravere modification

ftruncate Vide le contenu du fichier

Mise agrave jour de la date de derniegravere modification

LightPath 2014copy - httpwwwjmrenouardfr 34

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 35: PHP5 et les fichiers

tmpfile creacuteation drsquoun fichier temporaire

fclose provoque la suppression du ficher temporaire

tmpnam creacuteation drsquoun nom unique pour fichier temporaire

sys_get_temp_dir reacutecupeacuteration du reacutepertoire temporaire du systegraveme

LightPath 2014copy - httpwwwjmrenouardfr 35

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 36: PHP5 et les fichiers

LightPath 2014copy - httpwwwjmrenouardfr 36

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 37: PHP5 et les fichiers

parse_ini_file analyse le fichier de configuration format INI

2egraveme paramegravetre True si creacuteation de sous tableau

Attention les fichiers INI sont lisibles par navigateur Web

LightPath 2014copy - httpwwwjmrenouardfr 37

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 38: PHP5 et les fichiers

Ceci est un fichier de configuration Les commentaires commencent par comme dans phpini [first_section] one = 1 five = 5 animal = BIRD [second_section] path = usrlocalbin URL = httpwwwexamplecom~username [third_section] phpversion[] = 50 phpversion[] = 51 phpversion[] = 52 phpversion[] = 53

LightPath 2014copy - httpwwwjmrenouardfr 38

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 39: PHP5 et les fichiers

print_r(parse_ini_file($ini_file true))

Array ( [first_section] =gt Array (

[one] =gt 1

[five] =gt 5

[animal] =gt Dodo bird

)

[second_section] =gt Array ( [path] =gt usrlocalbin

[URL] =gt httpwwwexamplecom~username

)

[third_section] =gt Array ( [phpversion] =gt Array (

[0] =gt 50

[1] =gt 51

[2] =gt 52

[3] =gt 53

)

)

LightPath 2014copy - httpwwwjmrenouardfr 39

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40

Page 40: PHP5 et les fichiers

LightPath Socieacuteteacute de conseil et drsquoingeacutenierie

Formations Conseil Audit et mise en œuvre

jmrenouardlightpathfr

Jean-Marie RENOUARD jmrenouardgmailcom

Twitter jmrenouard

httpwwwjmrenouardfr

LightPath 2014copy - httpwwwjmrenouardfr 40