【发布时间】:2021-06-07 17:05:14
【问题描述】:
我在我创建目录的 laravel 中得到了这个 DatabaseSeeder.php:
public function run()
{
Storage::deleteDirectory('posts');
Storage::makeDirectory('posts');
// Etcetera ...
}
然后我跑
$ php artisan migrate:fresh --seed
这在我的开发环境(Laravel Homestead)中完美运行。
但是,如果我使用 Laradock 在 Docker 容器中运行相同的命令,则会收到以下错误:
播种:数据库\Seeders\PostsSeeder
无效参数异常
无法写入目录“public/storage/posts”
在供应商/fakerphp/faker/src/Faker/Provider/Image.php:90 86▕){ 87▕ $dir = is_null($dir) ? sys_get_temp_dir() : $dir; // GNU/Linux/OS X/Windows 兼容 88▕ // 验证目录路径 89▕ if (!is_dir($dir) || !is_writable($dir)) { ➜ 90▕ throw new \InvalidArgumentException(sprintf('无法写入目录 "%s"', $dir)); 91▕} 92▕ 93▕ // 生成一个随机文件名。使用服务器地址,以便一个文件 94▕ //在不同的服务器上同时生成不会发生冲突。
+3 供应商框架 数据库/工厂/ImageFactory.php:25
Faker\Generator::__call()
为什么会这样?
我该如何解决?
解决方法
要轻松解决它,只需创建这些目录:
$ ls -lah public/
$ cd public/ && mkdir storage && cd storage && mkdir posts && cd ../..
再试一次
$ artisan migrate:refresh --seed
【问题讨论】:
-
您是否尝试为您的存储文件夹授予权限?