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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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)

5年前 评论

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