19

我已经查看了有关此的其他帖子,由于某种原因,我的似乎是独一无二的

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

/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".",…}

不知道这个时期是从哪里来的,非常感谢任何帮助

谢谢大家!

  • 扎克
4

2 回答 2

23

通过根据评论设置权限来修复它,我用

chown -R www-data:root .

在我的目录的根目录中

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

于 2017-12-28T23:10:34.117 回答
2

首先,删除这些文件夹

/public/storage

/storage/app/public

然后运行以下命令

php artisan storage:link
于 2021-04-26T23:07:09.170 回答