static function decompact($release) { set_time_limit(0); ini_set('memory_limit', '512M'); include_once "config.php"; $version = $release; $version = str_replace('/', '', $version); require URLLOCAL . 'classes_ext/Tar.php'; $ficArchive = URLLOCAL . 'var/dist/' . PREFIXEARCHIVE . '.maj.' . $version . '.tgz'; $tmpInflatePath = URLLOCAL . 'temp/installdist/'; if (file_exists($tmpInflatePath)) { if (!XhamUpdater::rmdir_recurse($tmpInflatePath)) { echo "Impossible de supprimer le répertoire {$tmpInflatePath} . Abandon."; die; } } //on décompresse mkdir($tmpInflatePath); $archive = new Archive_Tar($ficArchive); $res = $archive->extract($tmpInflatePath); if (!$res) { echo "Probleme lors de la décompression"; die; } $tabFics = array(); XhamUpdater::listFiles($tmpInflatePath, $tabFics); $listeFicsKo = array(); $listeDossiersKo = array(); $listeDossiersKoDroits = array(); foreach ($tabFics as $file) { if (!file_exists(dirname(URLLOCAL . $file))) { if (!mkdir(dirname(URLLOCAL . $file), 0777, true)) { $listeDossiersKo[] = dirname(URLLOCAL . $file); } } if (!file_exists(URLLOCAL . $file) && !is_writable(dirname(URLLOCAL . $file))) { $listeDossiersKoDroits[] = dirname(URLLOCAL . $file); } else { if (file_exists(URLLOCAL . $file) && !is_writable(URLLOCAL . $file)) { $listeFicsKo[] = URLLOCAL . $file; } } } if (count($listeFicsKo) > 0 || count($listeDossiersKoDroits) > 0 || count($listeDossiersKo) > 0) { foreach ($listeFicsKo as $file) { print "<br /><font color=\"red\">{$file} n'est pas autorisé en écriture pour le user " . $_ENV["APACHE_RUN_USER"] . "</font>"; } foreach ($listeDossiersKoDroits as $dossier) { print "<br /><font color=\"red\">Le dossier {$dossier} doit etre autorisé en écriture pour le user " . $_ENV["APACHE_RUN_USER"] . "</font>"; } foreach ($listeDossiersKo as $dossier) { print "<br /><font color=\"red\">Le dossier {$dossier} n'a pas pu être créé par le user " . $_ENV["APACHE_RUN_USER"] . "</font>"; } print "<br />La mise à jour ne s'est pas effectuée."; die; } foreach ($tabFics as $file) { print "<br />Installing " . $tmpInflatePath . $file . ' on ' . URLLOCAL . $file; ob_flush(); flush(); if (!copy($tmpInflatePath . $file, URLLOCAL . $file)) { //TODO: //erreur de copie -> reprendre la sauvegarde précédente } } //pas de pb ? suppression de la décompression XhamUpdater::rmdir_recurse($tmpInflatePath); }