当我通过Artisan类运行时,sp​​atie / laravel-backup“mysqldump”无法识别

时间:2017-01-18 14:21:10

标签: php mysql laravel backup

我在WAMP localhost中使用spatie/laravel-backup

当我在windows cmd中手动输入时,它工作正常:

php artisan backup:run

但是当我尝试使用laravel Artisan类运行备份时:

Artisan::call('backup:run');

抛出错误:

'mysqldump' not recognized ...

在laravel mysql配置中,我还指定了转储器的路径:

'mysql' => [
            'driver' => 'mysql',
            // ...
            'dump' => [
                'dump_binary_path' => 'E:/wamp/wamp64/bin/mysql/mysql5.7.9/bin',
           ],
        ],

我该如何解决?

修改

可能只是支持windows的“bug”(感谢Loek的回答),as the author says,所以我可以在没有安全命令的情况下在控制器中运行备份吗?也许有类似的东西:

use Spatie\Backup\Tasks\Backup\BackupJobFactory;

BackupJobFactory::createFromArray(config('laravel-backup'))->run();

作为command本身。

1 个答案:

答案 0 :(得分:2)

我相信这是正斜线。试试这个:

'mysql' => [
        'driver' => 'mysql',
        // ...
        'dump' => [
            'dump_binary_path' => 'E:\\wamp\\wamp64\\bin\\mysql\\mysql5.7.9\\bin',
       ],
    ],

修改

对Windows的支持充其量是最好的,GitHub问题上的创建者有多个“此软件包不支持Windows”的评论。这是最新的:https://github.com/spatie/laravel-backup/issues/311

这也可能是许可问题。从命令行执行可能发生在另一个用户而不是从Web服务器执行,因此Windows拒绝访问mysqldump。

第二次修改

只要你确保控制器只在需要时被调用,我不明白为什么这不起作用!