Définit toutes les propriétés d'une liste dans une déclaration
Comment créer un dossier avec PHP? ou Traitement des répertoires en PHP.Dans ce tutoriel, vous allez apprendre à traiter les répertoires ou les dossiers en utilisant PHP
Dans notre tutoriel manipulation des fichiers en PHP, vous avez appris à travailler avec les fichiers en PHP. De la même façon, PHP vous permet aussi de travailler avec les répertoires du système de fichiers, par exemple, vous pouvez ouvrir un répertoire et lire son contenu, créer ou supprimer un répertoire, lister tous les fichiers du répertoire, et ainsi de suite.
Pour créer un répertoire avec PHP, vous pouvez utiliser la fonction mkdir(). Elle prend en paramètre le nom du répertoire à créer, ainsi que les permissions d'accès au répertoire (optionnel).
Voici un exemple :
Code Exemple:
<!DOCTYPE html> <html> <head lang="fr"> <meta charset="utf-8"> <title> PHP création d'un répertoire en php</title> </head> <body> <p> <?php // le chemin du dossier à créer $dir = "testdir"; // Verifier l'existence du dossier if(!file_exists($dir)){ // Tentative de création du répertoire if(mkdir($dir)){ echo "Répertoire créé avec succès."; } else{ echo "ERREUR : Le répertoire n'a pas pu être créé."; } } else{ echo "ERREUR : Le répertoire existe déjà."; } ?> </p> </body> </html>
Pour que la fonction mkdir() fonctionne, les dossiers parents dans le paramètre chemin de dossier doivent déjà exister, par exemple, si vous spécifiez le chemin de dossier comme testdir/subdir, alors le dossier testdir doit exister sinon PHP générera une erreur.
Vous pouvez copier un fichier d'un emplacement à un autre en appelant la fonction PHP copy() avec les chemins source et destination du fichier comme arguments. Si le fichier de destination existe déjà, il sera écrasé. Voici un exemple qui crée une copie du fichier "exemple.txt" dans le dossier de sauvegarde.
Code
<!DOCTYPE html> <html> <head lang="fr"> <meta charset="utf-8"> <title> PHP création de dossier et copier d'un fichier</title> </head> <body> <p> <?php // le chemin du dossier à créer $dir = "backup"; // Verifier l'existence du dossier if(!file_exists($dir)){ // Tentative de création du répertoire if(mkdir($dir)){ echo "Répertoire créé avec succès."; } else{ echo "ERREUR : Le répertoire n'a pas pu être créé."; } } else{ echo "ERREUR : Le répertoire existe déjà."; } echo "<br>"; // Source file path $file = "test1.txt"; // Chemin de destination du fichier $newfile = "backup/test1.txt"; // Vérification de l'existence du fichier if(file_exists($file)){ // Tentative de copier du fichier if(copy($file, $newfile)){ echo "Fichier copié avec succès."; } else{ echo "ERREUR : Le fichier n'a pas pu être copié."; } } else{ echo "ERREUR : Le fichier n'existe pas."; } ?> </p> </body> </html>
Dans cet exemple nous avons créer un répertoire backup et nous y avons copier le fichier test1.txt.
Pour que cet exemple fonctionne, le fichier source, c'est-à-dire "test1.txt", doit déjà exister, sinon PHP générera une erreur.
Vous pouvez utiliser la fonction PHP scandir() pour lister les fichiers et les répertoires dans le chemin spécifié.
Nous allons maintenant créer une fonction personnalisée qui listera récursivement tous les fichiers d'un répertoire en utilisant PHP. Ce script sera utile si vous travaillez avec une structure de répertoire profondément imbriquée.
Code
<!DOCTYPE html> <html> <head lang="fr"> <meta charset="utf-8"> <title> PHP création de dossier et copier d'un fichier</title> </head> <body> <p> <?php // Définir une fonction pour afficher la liste des fichiers dans un répertoire. function outputFiles($path){ // Vérifier l'existance du dossier if(file_exists($path) && is_dir($path)){ // Parcouir les fichiers du dossier $result = scandir($path); // Filtrer les répertoires courant (.) et parent (..) $files = array_diff($result, array('.', '..')); if(count($files) > 0){ // Boucle à travers le tableau résultant foreach($files as $file){ if(is_file("$path/$file")){ // afficher la liste echo $file . "<br>"; } else if(is_dir("$path/$file")){ /* Appel récursif de la fonction si des répertoires sont trouvés*/ outputFiles("$path/$file"); } } } else{ echo "ERREUR : Aucun fichier trouvé dans le répertoire"; } } else { echo "ERREUR : Le répertoire n'existe pas."; } } // Call the function outputFiles("backup"); ?> </p> </body> </html>
Lorsque vous travaillez sur la structure des répertoires et des fichiers, vous pouvez parfois avoir besoin de trouver certains types de fichiers dans le répertoire, par exemple, lister uniquement les fichiers .text ou .png, etc. Vous pouvez le faire facilement avec la fonction PHP glob(), qui fait correspondre les fichiers en fonction du motif.
Le code PHP de l'exemple suivant va rechercher le répertoire documents et lister tous les fichiers avec l'extension .text. Il ne cherchera pas dans les sous-répertoires.
Code
<p> <?php /* Recherche dans le répertoire et boucle dans tableau retourné contenant les fichiers trouvés */ foreach(glob("../*.txt") as $file){ echo basename($file) . " (size: " . filesize($file) . " bytes)" . "<br>"; } ?> </p>
La fonction glob() peut aussi être utilisée pour trouver tous les fichiers d'un répertoire ou de ses sous-répertoires. La fonction définie dans l'exemple suivant listera récursivement tous les fichiers d'un répertoire, tout comme nous l'avons fait dans l'exemple précédent avec la fonction scandir().
Code
<div> <?php // Définir une fonction pour afficher les fichiers d'un répertoire function outputFiles($path){ // Vérifier si le répertoire existe if(file_exists($path) && is_dir($path)){ // Rechercher les fichiers dans ce répertoire $files = glob($path ."/*"); if(count($files) > 0){ // Boucle dans le tableau récupéré foreach($files as $file){ if(is_file("$file")){ // Affichage du nom du fichier uniquement echo basename($file) . "<br>"; } else if(is_dir("$file")){ /* Appeler récursivement la fonction si des répertoires ont été trouvés.*/ outputFiles("$file"); } } } else{ echo "ERREUR : Aucun fichier de ce type n'a été trouvé dans le répertoire."; } } else { echo "ERREUR : le répertoire n'existe pas."; } } // appel de la fonction outputFiles("./"); ?> </div>