open($destinationPath . $zipFileName, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) { exit("Impossible de créer ou d'ouvrir ou créer le fichier data/" . $zipFileName . ".
Il est possible que ce fichier existe déjà et soit interdit en écriture.

Retour au site

"); } $compteur = 0; // recherche récursive dans les dossiers dans $directories foreach($targetDirectories as $path) { // les deux lignes suivantes reviennent à utiliser le paramètre "-r" dans la console $directory = new RecursiveDirectoryIterator($path); $iterator = new RecursiveIteratorIterator($directory); foreach ($iterator as $info) { // chemins inutiles . et .. if($info->getFilename() != "." && $info->getFilename() != "..") { $Zip->addGlob($info->getPathname(), 0, array('')); $compteur++; } } } // recherche à la racine avec des pattern de noms de fichiers // possibilité d'un tableau vide (paramètre optionnel) foreach($allPattern as $onePattern) { $Zip->addGlob($onePattern, 0, array('')); } $Zip->close(); if($compteur > 0) { chmod($destinationPath . $zipFileName, 0666); // en octal } else { $_SESSION['erreur'] = "Extraction des données impossible, le site entier est vide."; } } function restaurer($from) { $title = 'Restauration des données'; $message = ''; // recharger la même page en écrivant les données if(isset($_FILES['archive']) && $_FILES['archive']['error'] == 0) { // détecter le format (zip ou autre) // une copie du zip est conservée dans data/ au cas où move_uploaded_file($_FILES['archive']['tmp_name'], 'data/' . $_FILES['archive']['name']); chmod('data/' . $_FILES['archive']['name'], 0666); $nomFichier = 'data/' . $_FILES['archive']['name']; // extraction try { $Zip = new ZipArchive(); } catch (Throwable $e) // l'extension zip n'est pas activée { echo($e); die(); } if($Zip->open($nomFichier, ZipArchive::RDONLY) === TRUE) { $j = 0; for($i = 0; $i < $Zip->numFiles; $i++) { $nomEntree = $Zip->getNameIndex($i); if($Zip->extractTo('.', $nomEntree) === TRUE) { $j++; } else { $message = '

Erreur: extraction du zip impossible.

'; } chmod($nomEntree, 0666); } if($j == $Zip->numFiles) { $message = '

Restauration réussie !!

'; } $Zip->close(); } else { // mauvais fichier $message = '

Erreur: Impossible d\'ouvrir l\'archive Zip."

'; } } elseif(isset($_FILES['archive']) && $_FILES['archive']['error'] != 0) { $message = '

Erreur: Le fichier n\'a pas pu être téléchargé correctement."

'; } require('view/backup.php'); }