PHP offre des fonctions permettant d'effectuer les opérations courantes sur les fichiers : copie, déplacement, renommage et suppression.

Pour les exemples, nous utiliserons le dossier test_fichiers avec le contenu et l'arborescence ci-contre.

Ce dossier se trouve dans le dossier test du tutoriel. Vous pouvez voir son contenu avec le bouton dans la barre de menu du tutoriel.

Si vous ne voyez pas ce dossier, ou si vous voulez le ré-initialiser utilisez ce script.

### Copier un fichier

La copie d'un fichier se fait très simplement avec la fonction copy():
copy('fichierSource', 'fichierDestination').

- copy() renvoie TRUE si la copie a réussi, FALSE sinon.
- Le nom des fichiers peut contenir un chemin d'accès, relatif ou absolu.
- Le dossier de destination doit exister car copy() ne le créera pas automatiquement.
- Si le fichier de destination existe déjà, il est remplacé.
- Le script doit avoir les droits de lecture et d'écriture sur les deux dossiers, et sur le fichier source.
- L'utilisation de "jokers" (exemple : copy('*.gif', '../svg/'); ) n'est pas possible.<

Exemple : copie de fichier
<?php ob_start(); require('bib_fonctions.php'); htmlDebut('Copie de fichier'); htmlInfo('Copie commentaires.txt dans commentaires.old'); $source = 'test_fichiers/commentaires.txt'; $destin = 'test_fichiers/commentaires.old'; $ok = copy($source, $destin); echo $ok ? 'Copie réussie' : 'Erreur dans la copie'; htmlFin(); ?>
Vérifier le contenu du dossier de travail
Exemple : copie de fichier
<?php ob_start(); require('bib_fonctions.php'); htmlDebut('Copie de fichier'); htmlInfo('Copie images/diapo2.jpg dans export/diapo2.jpg'); $source = 'test_fichiers/images/diapo2.jpg'; $destin = 'test_fichiers/export/diapo2.jpg'; $ok = copy($source, $destin); echo $ok ? 'Copie réussie' : 'Erreur dans la copie'; htmlFin(); ?>
Vérifier le contenu du dossier de travail

Les erreurs éventuelles sont affichées par défaut.

Exemple : erreur de copie
<?php ob_start(); require('bib_fonctions.php'); htmlDebut('Copie de fichier'); htmlInfo('Copie inexistant.gif dans nouveau.gif'); $source = 'test_fichiers/inexistant.gif'; $destin = 'test_fichiers/nouveau.gif'; $ok = copy($source, $destin); echo $ok ? 'Copie réussie' : 'Erreur dans la copie'; htmlFin(); ?>

Lors de la manipulation de fichiers, pour éviter de tels messages qui donnent des renseignements sur les dossiers du serveur, je vous recommande de préfixer les fonctions PHP avec l'opérateur de masquage @.

Exemple : erreur de copie avec masquage
<?php ob_start(); require('bib_fonctions.php'); htmlDebut('Copie de fichier'); htmlInfo('Copie inexistant.gif dans nouveau.gif'); $source = 'test_fichiers/inexistant.gif'; $destin = 'test_fichiers/nouveau.gif'; $ok = @copy($source, $destin); echo $ok ? 'Copie réussie' : 'Erreur dans la copie'; htmlFin(); ?>

### Renommer/déplacer un fichier

Avec PHP, le changement du nom d'un fichier concerne toutes les parties du nom : le nom proprement dit et le chemin d'accès. Ainsi, la fonction rename() permet de renommer un fichier, mais également de le déplacer si un dossier de destination différent du dossier source est donné.

- La fonction renvoie TRUE si le changement de nom ou le déplacement a réussi, FALSE sinon.
- Le nom des fichiers peut contenir un chemin d'accès, relatif ou absolu.
- Si un dossier de destination est donné, il doit exister car rename() ne le créera pas automatiquement.
- Si le fichier de destination existe déjà, il est remplacé.
- Le script doit avoir les droits de lecture et d'écriture sur les deux dossiers, et sur le fichier source.
- L'utilisation de "jokers" (exemple : rename('*.gif', '*.svg'); ) n'est pas possible.

Exemple : renommer un fichier
<?php ob_start(); require('bib_fonctions.php'); htmlDebut('Renommer un fichier'); htmlInfo('commentaires.old est renommé en remarques.txt'); $source = 'test_fichiers/commentaires.old'; $destin = 'test_fichiers/remarques.txt'; $ok = @rename($source, $destin); echo $ok ? 'Renommage réussi' : 'Erreur dans le renommage'; htmlFin(); ?>
Vérifier le contenu du dossier de travail
Exemple : déplacer un fichier
<?php ob_start(); require('bib_fonctions.php'); htmlDebut('Déplacer un fichier'); htmlInfo('remarque.txt déplacé dans le dossier export'); $source = 'test_fichiers/remarques.txt'; $destin = 'test_fichiers/export/remarques.txt'; $ok = @rename($source, $destin); echo $ok ? 'Déplacement réussi' : 'Erreur déplacement'; htmlFin(); ?>
Vérifier le contenu du dossier de travail

### Supprimer un fichier

La suppression d'un fichier se fait avec la fonction unlink().

- La fonction renvoie TRUE si la suppression a réussi, FALSE sinon.
- Le nom du fichier peut contenir un chemin d'accès, relatif ou absolu.
- Le script doit avoir les droits de lecture et d'écriture sur le fichier.
- L'utilisation de "jokers" (exemple : unlink('*.gif'); ) n'est pas possible.

Exemple : supprimer un fichier
<?php ob_start(); require('bib_fonctions.php'); htmlDebut('Supprimer un fichier'); htmlInfo('Suppression de export/remarque.txt'); $ok = @unlink('test_fichiers/export/remarque.txt'); echo $ok ? 'Suppression réussie' : 'Erreur suppression'; htmlFin(); ?>
Vérifier le contenu du dossier de travail