open($chemin . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) { exit("Impossible d'ouvrir le fichier " . $chemin . $nomFichier . ".\n"); } // ajout des fichiers // chemin complet = data/"pages"/"html ou images"/"tous les fichiers" $zip->addGlob($chemin . '*/*/*', 0, array('')); $zip->close(); // pour pouvoir manipuler le fichier depuis filezilla ou ssh chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres require('view/backup.php'); } function restaurer($from) { $title = 'Restauration des données'; $chemin = "data/"; $nomFichier = "melaineDATA.zip"; require('view/backup.php'); } // inutile function creerMelainePHP() { $nomFichier = "melainePHP.zip"; try { $Zip = new ZipArchive(); } catch (Throwable $e) // absence de l'extension zip { echo($erreur); die(); } if ($Zip->open('data/' . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) { exit("Impossible d'ouvrir le fichier " . $nomFichier . ".\n"); } // fichiers à la racine $Zip->addGlob('*.php', 0, array('')); $Zip->addGlob('.htaccess', 0, array('')); $Zip->addGlob('*.txt', 0, array('')); // tous les dossiers sauf data et .git $listeDossiers = array('model', 'view', 'controller', 'public', 'lib'); foreach($listeDossiers as $path) { // les deux lignes suivantes me dépassent un peu, // mais ça marche et c'est comme ça qu'il faut faire $directory = new RecursiveDirectoryIterator($path); $iterator = new RecursiveIteratorIterator($directory); foreach ($iterator as $info) { // chemins inutiles . et .. if($info->getFilename() != "." && $info->getFilename() != "..") { //var_dump($info->getPathname()); $Zip->addGlob($info->getPathname(), 0, array('')); } } } $Zip->close(); chmod('data/' . $nomFichier, 0644); // écriture 4 chiffres (octal) }