Laravel 无法创建根目录

Laravel Impossible to Create Root Directory

我已经查看了有关此的其他帖子,不知为何我的帖子似乎很独特

基本上我想做的是将上传的照片存储在 public 目录中以便于访问,但是当我存储它们时,我试图将它们存储在用户特定的文件夹中,所以

/public/photos/$User->id/$filename.jpg

现在我有 Dropzone 上传文件,我已经添加到我的filesystem.php这个声明

'public_uploads' => [
  'driver' => 'local',
  'root'   => public_path(),
],

所以理论上当我使用

访问它时
Storage::disk('public_uploads') 

它应该检索正确的路径

这也是我的控制器

$User = User::find(Auth::user()->id);
$Photo = Request::file('photo');
Storage::disk('public_uploads')->put("photos/$User->id", $Photo);

然后我在上传Laravel时收到此错误

{message: "Impossible to create the root directory "/censoredfilesystem/public/Photos/1".",…}

不知道经期是从哪里来的,非常感谢您的帮助

谢谢大家!

根据评论设置权限不知不觉修复了,我用

chown -R www-data:root .

在我的根目录中

编辑:我使用了 www-data:root,意思是将 Laravel 目录中所有内容的所有者设置为 www-data(网络服务器)并且 rootroot 明显地。如果你这样做,你应该用非 root 用户来做,或者只是 www-data

首先,删除这些文件夹

/public/storage

/storage/app/public

然后运行下面的命令

php artisan storage:link

另一种选择是进入 /storage/app/public/ 并创建要存储文件的文件夹(如果不存在),即 /storage/app/public/addfolder (如果管理员或在服务器上工作,请授予您 fopen 和 fwrite 等权限)