я использую spatie / Laravel резервного копирования в локальном хосте WAMP.
Это работает нормально, когда я печатаю вручную в Windows CMD:
php artisan backup:run
Но когда я пытаюсь запустить резервное копирование с помощью класса Artisan laravel:
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',
],
],
Как я могу это исправить?
РЕДАКТИРОВАТЬ
Вероятно, это просто поддержка «ошибки» для окон (в конце концов, спасибо ответу Лука), как говорит автор, так что я могу запустить резервное копирование в контроллере без команды безопасно? может быть с чем-то вроде:
use Spatie\Backup\Tasks\Backup\BackupJobFactory;
BackupJobFactory::createFromArray(config('laravel-backup'))->run();
Как команда сам.
Я считаю, что это слэш. Попробуй это:
'mysql' => [
'driver' => 'mysql',
// ...
'dump' => [
'dump_binary_path' => 'E:\\wamp\\wamp64\\bin\\mysql\\mysql5.7.9\\bin',
],
],
РЕДАКТИРОВАТЬ
Поддержка Windows в лучшем случае выигрышна, с многочисленными комментариями «Этот пакет не поддерживает Windows» от создателей по проблемам GitHub. Это последнее: https://github.com/spatie/laravel-backup/issues/311
Это также может быть проблема с разрешением. Выполнение из командной строки, вероятно, происходит от другого пользователя, а не от веб-сервера, поэтому Windows запрещает доступ к mysqldump.
2-е редактирование
Пока вы убедитесь, что контроллер вызывается только тогда, когда это необходимо, я не понимаю, почему это не сработает!
Других решений пока нет …