dizda / CloudBackupBundle

Be able to backup your database(s) and upload it to the cloud (Dropbox, Amazon S3, GoogleDrive, etc.)
MIT License
196 stars 57 forks source link

app.CRITICAL: [dizda-backup] Unexpected exception. #83

Closed yohann-teisseire closed 8 years ago

yohann-teisseire commented 8 years ago

Hi, This is my conf :

config.xml dizda_cloud_backup:

By default backup files will have your servers hostname as prefix

# such as: hostname_2014-01-01_21-08-39.tar
output_file_prefix: hostname
timeout: 300
processor:
    type: tar # Required: tar|zip|7z
    options:
        compression_ratio: 6
        password: qwerty
        # Split into many files of `split_size` bytes
        split:
            enable: false # Default false
            split_size: 1000 # Make each zip files no larger than "split_size" in bytes
            storages: [ Gaufrette ] # Which cloud storages will upload split files
folders: [ web/bdd ]
cloud_storages:
    # Local storage definition
    local:
        path: C:\wamp\www\trunkRefonte
    gaufrette:
        service_name:   # Gaufrette filesystem(s) service name
            - foo_filesystem
databases:
    mysql: # When no parameters is specified under mysql, the bundle taking those from parameters.yml

knp_gaufrette: adapters: foo: local: directory: 'C:\wamp\www\trunkRefonte\' filesystems: bar: adapter: foo alias: foo_filesystem

I would like to backup my bdd in localhost, but i think my problem is in adapters/foo/local/directory or cloud_storages/local/path. I do not know which path I ought to put in this section.

Could you help me ?

Thanks

dizda commented 8 years ago

Hello,

Can you please format your conf, help can be found here https://guides.github.com/features/mastering-markdown/

yohann-teisseire commented 8 years ago

githelp

Nyholm commented 8 years ago

What do your logs say? Have you tried to debug this? On what line does the exception occur?

yohann-teisseire commented 8 years ago

When i execute this command : "app/console dizda:backup:start" or this one : "php app/console --env=prod dizda:backup:start"

I have this error : "[2015-11-09 10:50:55] app.CRITICAL: [dizda-backup] Unexpected exception. Something went terribly wrong. We could not create a backup. Read your log files to see what caused this error."

prod.log : [2015-11-09 10:53:03] app.INFO: [dizda-backup] Dumping MySQL database [] [] [2015-11-09 10:53:03] app.CRITICAL: [dizda-backup] Unexpected exception. [] [2015-11-09 10:53:03] app.INFO: [dizda-backup] Cleaning up after us. [] []

dev.log [2015-11-09 10:53:35] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] [] [2015-11-09 10:53:35] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". [] [] [2015-11-09 10:53:35] app.INFO: [dizda-backup] Dumping MySQL database [] [] [2015-11-09 10:53:35] app.CRITICAL: [dizda-backup] Unexpected exception. [] [2015-11-09 10:53:35] app.INFO: [dizda-backup] Cleaning up after us. [] [] [2015-11-09 10:53:35] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onTerminate". [] [] [2015-11-09 10:53:35] event.DEBUG: Notified event "console.terminate" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate". [] []

thanks,

yohann-teisseire commented 8 years ago

I think my way is wrong but i don't know which way is the good one. in : cloud_storages.local.path: C:\wamp\www\trunkRefonte or : knp_gaufrette.adapters.foo.local.directory: 'C:\wamp\www\trunkRefonte\'

Nyholm commented 8 years ago

Start debugging MySQL.php on line 55 and see where it crashes.

@dizda I believe we need to start throwing a lot more (and different kind of) exceptions.

yohann-teisseire commented 8 years ago

When i dump getCommand in mysql.php var_dump($this->getCommand());die;

i have this: string(91) "mysqldump -uroot symfony > C:\wamp\www\trunkRefonte\app\cache\prod/backup/mysql/symfony.sql"

yohann-teisseire commented 8 years ago

Now i have this error : [2015-11-09 11:29:02] app.INFO: [dizda-backup] Dumping MySQL database [] [] [2015-11-09 11:29:02] app.INFO: [dizda-backup] Copying folders. [] [] [2015-11-09 11:29:02] app.INFO: [dizda-backup] Compressing to archive using Tar [] [] [2015-11-09 11:29:02] app.CRITICAL: [dizda-backup] Unexpected exception. [] [2015-11-09 11:29:02] app.INFO: [dizda-backup] Cleaning up after us. [] []

It's better than before

dizda commented 8 years ago

@Nyholm Agree. Unexpected exception is a way too large.

Nyholm commented 8 years ago

@yohann-teisseire What did you change?

yohann-teisseire commented 8 years ago

In Database.php $this->dataPath = $basePath.static::DB_PATH.'/'; //$this->dataPath = "C:/wamp/www/trunkRefonte/app/cache/".static::DB_PATH.'/';

$this->dataPath = C:\wamp\www\trunkRefonte\app\cache\prod/backup/mysql/symfony.sql" Should be C:/wamp/www/trunkRefonte/app/cache/prod/backup/mysql/symfony.sql"

yohann-teisseire commented 8 years ago

In Database.php, when i dump this function, send null protected function preparePath() { $this->filesystem->mkdir($this->dataPath); }

Nyholm commented 8 years ago

Yeah, I figured it had something to do with windows =)

PS. When pasting code in you should use the "backticks". See under Syntax highlitning

yohann-teisseire commented 8 years ago

Yeah, i use windows, so now my problem is just after "Compressing to archive using Tar"

yohann-teisseire commented 8 years ago

When i add a var_dump " var_dump($this->getCommand());die;", i have a folder created in "app/cache/prod/backup/mysql" but it's empty, without var_dump, the folder isn't created.

/**
 * {@inheritdoc}
 */
public function dump()
{
    $this->preparePath();
    var_dump($this->getCommand());die;
}

/**
 * {@inheritdoc}
 */
protected function getCommand()
{
    $this->dataPath = ' C:/wamp/www/trunkRefonte/app/cache/prod/backup/';
    return sprintf('mysqldump %s %s > %s',
        $this->auth,
        $this->database,
        $this->dataPath.$this->fileName);
}
yohann-teisseire commented 8 years ago

After multiple dump, preparePath send 'null', i think the problem is here.

/**
 * {@inheritdoc}
 */
public function dump()
{
    $this->preparePath();
    $this->getCommand();
}
yohann-teisseire commented 8 years ago

I have put my symfony app on my server, now it's better, errors of yesterday have disappeared. my console errors : PHP Warning: copy(http://recette.potentielettalents.com/web/uploads/hostname_2015-11-10_11-55-48.tar): failed to open stream: HTTP wrapper does not support writeable connections in /var/www/html/recette/vendor/dizda/cloud-backup-bundle/Dizda/CloudBackupBundle/Client/LocalClient.php on line 30 PHP Fatal error: Class 'Dizda\CloudBackupBundle\Client\Exception' not found in /var/www/html/recette/vendor/dizda/cloud-backup-bundle/Dizda/CloudBackupBundle/Client/LocalClient.php on line 32 [2015-11-10 11:55:49] php.CRITICAL: Fatal Error: Class 'Dizda\CloudBackupBundle\Client\Exception' not found {"type":1,"file":"/var/www/html/recette/vendor/dizda/cloud-backup-bundle/Dizda/CloudBackupBundle/Client/LocalClient.php","line":32,"level":6143,"stack":[]}

I think i'm very close now

dizda commented 8 years ago

You've can not copy to a HTTP url, you should provide the local path of the server.

yohann-teisseire commented 8 years ago

i have put : path: 'var/www/html/recette/web/uploads', but the issue is still the same

PHP Warning: copy(var/www/html/recette/web/uploads/hostname_2015-11-10_12-05-46.tar): failed to open stream: No such file or directory in /var/www/html/recette/vendor/dizda/cloud-backup-bundle/Dizda/CloudBackupBundle/Client/LocalClient.php on line 30 PHP Fatal error: Class 'Dizda\CloudBackupBundle\Client\Exception' not found in /var/www/html/recette/vendor/dizda/cloud-backup-bundle/Dizda/CloudBackupBundle/Client/LocalClient.php on line 32 [2015-11-10 12:05:46] php.CRITICAL: Fatal Error: Class 'Dizda\CloudBackupBundle\Client\Exception' not found {"type":1,"file":"/var/www/html/recette/vendor/dizda/cloud-backup-bundle/Dizda/CloudBackupBundle/Client/LocalClient.php","line":32,"level":6143,"stack":[]}

[Symfony\Component\Debug\Exception\ClassNotFoundException] Attempted to load class "Exception" from namespace "Dizda\CloudBackupBundle\Client". Did you forget a "use" statement for e.g. "Gaufrette\Exception", "Assetic\Exception\Exception", "Symfony\Compo nent\Serializer\Exception\Exception", "Symfony\Component\Config\Definition\Exception\Exception", "Symfony\Comp onent\Security\Acl\Exception\Exception" or "Ivory\CKEditorBundle\Exception\Exception"?

dizda commented 8 years ago

Ok 2 things, you've forget a slash in front of your path, it should be /var/www/html/recette/web/uploads.

Then, you just pointed out an error on LocalClient file, https://github.com/dizda/CloudBackupBundle/blob/master/Client/LocalClient.php#L32 should be \Exception with an anti-slash.

yohann-teisseire commented 8 years ago

Great, my backup is ok.

thank you very much to both of you for your help

dizda commented 8 years ago

FYI https://github.com/dizda/CloudBackupBundle/releases/tag/3.2.1 released for the exception's namespace.