docker 部署 Laravel,无法访问 storage 目录中的 文件
环境
基于 docker 构建了 PHP7.2 容器、nginx容器,在容器中部署了 laravel 应用
问题
图片资源都存储到 laravel 应用的 storage/app/public
目录下,同时在 PHP 容器的 laravel 应用根目录下执行了 php artisan storage:link
命令,然后访问文件 http://域名/storage/a.pdf
失败。
是不是因为在 容器里面执行 php artisan storage:link
的原因
因为你使用命令行的账号跟网页访问的账号不一样,比如命令行用root账号执行,创建的文件拥有者是root,而一般网页访问,是用www-data账号来写入文件,此时要写入一个拥有者为root的文件,很可能就没有写的权限。可以参考这篇:https://stackoverflow.com/questions/276745... , 有几种解决方案。觉得这种比较省事:
在宿主机运行,给www-data默认rw的权限,后面是你要授权的目录。(如果没有安装acl,需要安装:apt-get insatall acl)