首页 > 解决方案 > Laradock 上的 Spatie Laravel 备份无法打开目录容器数据/mysql/#innodb_temp 权限被拒绝

问题描述

我在 Laradock(Docker 容器)上的 Laravel 应用程序上使用 Spatie 的 Laravel Backup。

使用此软件包,您可以运行手动备份或安排它。

手动备份确实有效。

首先我进入容器,然后运行手动备份:

$ docker exec -it workspace bash

/var/www# artisan backup:run
Starting backup...
Dumping database superDB...
Determining files to backup...
Zipping 5111 files and directories...
Created zip containing 5111 files and directories. Size is 80.08 MB
Copying zip to disk named backup...
Successfully copied zip to disk named superBU.
Backup completed!

但是,计划的备份不起作用

$schedule->command('backup:run')->sundays()->at('11:11');

因为它抛出以下错误异常:

RecursiveDirectoryIterator::__construct(/var/www/laradock/containers-data/mysql/#innodb_temp):无法打开目录:权限被拒绝

异常跟踪:#0 /var/www/vendor/spatie/laravel-backup/src/Tasks/Backup/FileSelection.php(109): Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator->getChildren() #1 /var/ www/vendor/spatie/laravel-backup/src/Tasks/Backup/Manifest.php(41): Spatie\Backup\Tasks\Backup\FileSelection->selectedFiles() #2 /var/www/vendor/spatie/laravel-备份/src/Tasks/Backup/BackupJob.php(176): Spatie\Backup\Tasks\Backup\Manifest->addFiles() #3 /var/www/vendor/spatie/laravel-backup/src/Tasks/Backup/ BackupJob.php(146): Spatie\Backup\Tasks\Backup\BackupJob->createBackupManifest() #4 /var/www/vendor/spatie/laravel-backup/src/Commands/BackupCommand.php(56): Spatie\Backup \Tasks\Backup\BackupJob->运行()

存储文件夹具有以下权限

drwxrwxr-x.  8 root laradock   90 Sep 01 13:00 storage

文件夹内storage/有两个文件夹来实现备份:

drwxr-xr-x.  3 laradock www-data   50 Sep 02 10:56 backups
drwxr-xr-x.  2 laradock www-data    3 Oct 02 11:06 backup-temp

containers-data/mysql/文件夹具有以下权限:

drwxr-x---. 2  999 www-data  187 Aug 10 23:01 '#innodb_temp'

任何人都可以对此有所了解吗?为什么计划的备份不起作用?为什么只有手动备份“工匠备份:运行”有效?

我已经检查了这个问题,还没有给出答案。

我还没有尝试过这个 GitHub 答案,其中建议将所有权更改为

$ sudo docker-compose exec workspace bash
# chown -R laradock:laradock /var/www/

这个另一个答案告诉如何laradock在容器内测试用户。.

标签: laravelpermission-deniedmkdirlaradocklaravel-backup

解决方案


推荐阅读