spatie/laravel-backup "mysqldump" 当我通过 Artisan 运行 时无法识别 class

spatie/laravel-backup "mysqldump" doesn't recognized when I run it through Artisan class

我在 WAMP 本地主机中使用 spatie/laravel-backup

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

php artisan backup:run

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

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',
           ],
        ],

我该如何解决?


编辑

可能只是支持 "bug" windows(感谢 Loek 的回答),as the author says,所以我可以 运行 在控制器中备份而不需要命令安全吗?也许像这样:

use Spatie\Backup\Tasks\Backup\BackupJobFactory;

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

作为 command 本身。

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

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

编辑

对 Windows 的支持充其量是靠不住的,创作者对 GitHub 问题发表了多条 "This package doesn't support Windows" 评论。这是最新的:https://github.com/spatie/laravel-backup/issues/311

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

第二次编辑

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