我在生产中的ubuntu和LEMP的DigitalOcean VPS中有一个laravel应用程序,网络工作正常,但似乎无法从我的网络上载文件,当我尝试通过ajax上载图像时出现以下错误(仅在生产中) ,本地作品权):
message fopen(/var/www/luisaldada.com/public/uploads/file-25-05-2019-21-39-MAL-421.jpeg): failed to open stream: Permission denied
exception ErrorException
file /var/www/luisaldada.com/vendor/league/flysystem/src/Adapter/Local.php
line 158
这似乎是一个明显的权限错误,但是我已经递归给laravel存储文件夹写perm,我正在使用laravel公共/本地磁盘将文件上传到public内部的上传文件夹中。
文件系统配置文件:
'public' => [
'driver' => 'local',
'root' => public_path(),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
也许与公用文件夹没有正确的上传/写入权限有关?
这是我对laravel文件夹的权限,您可以看到我已经尽力为存储文件夹设置ACL。
https://i.imgur.com/LLYIECc.png
这是我在contrller中上传文件的方式,以防万一:
$file = $request->file($name);
$filename = 'file-'.Carbon::now()->format('d-m-Y-H-i').'-'.str_random(3).'-'.mt_rand('000','999').'.'.$file->extension();
$file->storeAs('uploads', $filename);
答案 0 :(得分:0)
好吧,在检查了公开文件夹中的文件夹烫发之后,他们是:rwx rx –x,我做了chmod 770来上传,现在一切正常,你们觉得怎么样,我希望我没有做任何冒险的事情。 / p>
我想向大家展示我现在使用fot设置权限的命令,以便您可以自己动手做。
cd /var/www/luisaldada.com
sudo chown GabotronES:ww-data /var/www/luisaldada.com
&&
find /var/www/luisaldada.com -type d -exec chmod 755 {} \;
&&
find /var/www/luisaldada.com -type f -exec chmod 644 {} \;
&&
chmod 770 /var/www/luisaldada.com/public/uploads
&&
setfacl -Rdm u:www-data:rwx,u:GabotronES:rwx storage bootstrap/cache
&&
setfacl -Rm u:www-data:rwx,u:GabotronES:rwx storage bootstrap/cache