Laravel storage无需存储即可公开访问:链接

wfsdck30  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(91)

我正在维护一个旧的应用程序,这是我几年前第一次使用Laravel(版本7.x)时创建的。
最近,我从WAMP迁移到Docker作为我的本地开发环境。当时,我不知道storage:link命令,所以一些CSS和JS文件的URL结构如下:

<link href="{{asset('storage/app/public/assets/css/style.css')}}" rel="stylesheet">
<script src="{!! asset('storage/app/public/assets/js/settings.js') !!}"></script>

字符串
一切都在生产服务器(共享服务器)上完美工作,并在WAMP设置的本地环境中工作。
然而,当我切换到Docker时,存储文件夹变得不可访问。我考虑重构代码以使用storage:link,但不幸的是,storage:link在我的共享服务器上不起作用。
所以,我决定让它保持原样,直到我将应用程序移动到VPS。问题是,我不能让这些URL在Docker中本地工作。我想知道它们在生产中是如何工作的,所以必须有一种方法让它工作。我搜索了网络,但找不到任何关于如何做到这一点的线索。你有什么想法吗?

hgc7kmma

hgc7kmma1#

Looks like this issue
为了让它工作,Nginx容器必须能够访问存储文件夹,因为它应该为位于那里的资产提供服务。我猜目前情况并非如此,只有公共文件夹被挂载。
检查是否整个项目或./public和./storage都挂载到Nginx容器中。
就像这样:

services:
  #...
  nginx:
   #...
   volumes:
    - "./public:/var/www/html/public:ro"
    - "./storage/app:/var/www/html/storage/app:ro"
    #...

字符串

ukqbszuj

ukqbszuj2#

如果任何人遇到这个问题,我已经找到了解决方案,通过在本地创建存储链接,就像这样的文件系统. php

'links' => [
    public_path('storage') => storage_path(''),
],

字符串

相关问题