Silex框架,备份管理器FileExistsException文件已存在于路径中

时间:2016-01-15 08:15:39

标签: symfony silex

我在不同的网站上使用过这个脚本(https://github.com/backup-manager/backup-manager),效果很好。 在一个单一的我有一个问题:Filesystem.php第395行中的FileExistsException: 文件已存在于路径:5693d2350eb67test.sql.gz (这与每个网站上的代码完全相同)

我已在silex / Symfony应用程序中实现了此脚本。 我的所有网站都在同一个Debian服务器上。

你知道在哪里寻找吗? 也许关于服务器配置,文件夹权限......

非常感谢你帮助我。抱歉我的英文不好;)

这是我打电话的功能:

 public function restoreAction($id, Application $app) {
    $manager = require 'BootstrapController.php';
    $sauvegarde =  $app['dao.sauvegarde']->findbyId($id);
    $nomfichier = $sauvegarde->getNomfichier();
    $nomfichiergz = $nomfichier.'.gz';
    $sauvegardesnext = $app['dao.sauvegarde']->findlaterthan($id);
    $manager->makeRestore()->run('local',$nomfichiergz, 'production', 'gzip');
    //On recrée le fichier de sauvegarde correspondant a la restauration effectuée
    //car ce putain de backupDB nous le supprime
    $manager->makeBackup()->run('production', 'local', $nomfichier, 'gzip');
    //On supprime le fichier sql temp

    //$urlfichier = $app['dossiersave'].$nomfichier;
    //$fs->remove($urlfichier);

    //On supprime de la bdd les sauvegardes qui n'ont plus de fichier save sur le disque
    //effectivement quand on fait la 2 ou + eme sauvegarde, celui ci mémorise les sauvegardes précedentes
    //mais si entre temps l'utilisateur les supprime, celle-ci ne devrait plus aparaitre 
    //elles sont pourtant ds le fichier savedb qu'on avait effectué avant car elle n'étaient pas supprimées a ce moment la !
    //
    $sauvegardes = $app['dao.sauvegarde']->findAll();
    foreach ($sauvegardes as $sauvegarde) {
        $fs = new Filesystem();
        if (($fs->exists($app['dossiersave'].$sauvegarde->getNomfichier().'.gz')) == false) {
            // On supprime la sauvegarde en bdd
            $app['dao.sauvegarde']->delete($sauvegarde->getId());
        }
    } 
    //On recrée les points de sauvegarde ulterieur a la restauration car elles ne sont 
    //plus en bdd
        foreach ($sauvegardesnext as $savedb) {
            $savecurrent = new Sauvegarde();
            //$savecurrent->setId($savedb->getId());
            $savecurrent->setDate($savedb->getDate());
            $savecurrent->setNom($savedb->getNom());
            $savecurrent->setNomfichier($savedb->getNomfichier());
            $app['dao.sauvegarde']->save($savecurrent);
        }

    $fs = new Filesystem();
    $fs->mirror($app['dossiersave'].'images'.$sauvegarde->getNom().'_'.$id,$app['dossierimages'],null,$options = array('delete' => true, 'override' => true ));


        $app['session']->getFlashBag()->add('success', 'Votre sauvegarde ' .$sauvegarde->getNom(). ' a bien été restaurée');
        return $app->redirect ('/admin');     
    }

0 个答案:

没有答案