我在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本身。
答案 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。
第二次修改
只要你确保控制器只在需要时被调用,我不明白为什么这不起作用!