通过Ajax上传文件时无法打开流

时间:2019-05-25 19:54:05

标签: php laravel ubuntu

我在生产中的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);

1 个答案:

答案 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