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 的原因

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

因为你使用命令行的账号跟网页访问的账号不一样,比如命令行用root账号执行,创建的文件拥有者是root,而一般网页访问,是用www-data账号来写入文件,此时要写入一个拥有者为root的文件,很可能就没有写的权限。可以参考这篇:https://stackoverflow.com/questions/276745... , 有几种解决方案。觉得这种比较省事:

setfacl -d -m u:www-data:rw ~/dnmp/project/weibo/storage/logs

在宿主机运行,给www-data默认rw的权限,后面是你要授权的目录。(如果没有安装acl,需要安装:apt-get insatall acl)

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!