Laravel 符号链接到存储的符号链接在生产中不起作用 - 共享托管

问题描述 投票:0回答:2

我已将 Laravel 10 部署到 Siteground。我将 Laravel 公共文件夹的内容直接放在

public_html
中,并在
public_html
中为 Laravel 目录结构的其余部分创建了一个单独的文件夹。因此,存储文件夹(这是一个符号链接)位于
public_html
内。但是,我上传到
Laravel/storage/app/public
的所有图像在网站上都不可见。我尝试使用
ln -s
Linux 脚本通过 SSH 重新创建符号链接。符号链接似乎存在,但我仍然无法查看网站上的图像。我还尝试修改
.env(APP_URL)
.env(APP_STORAGE_PATH)
和文件系统文件,但无济于事。我可能做错了什么?

这是我迄今为止尝试过的:

  1. 通过 SSH 连接到服务器并运行
    ln -s
    storage/app/public
    public_html/storage
    链接。这似乎有效,因为我可以看到符号链接,但我仍然无法查看网站上的图像。
  2. 修改
    .env(APP_URL)
    .env(APP_STORAGE_PATH)
    和文件系统文件,但这似乎没有任何效果。

我已经没有主意了。谁能提供一些指导吗?

php laravel shared-hosting laravel-10 symlink-traversal
2个回答
1
投票

这是不可取的。您的 public_html 目录将是 Web 服务器所指向的目录,这意味着任何人都可以访问所有 Laravel 代码,其中可能包括您的 .env 文件,该文件是常见的攻击点,因为它可能包含敏感的 API 密钥和数据库凭据。

我不熟悉您所指的主机,但我强烈建议您联系他们的支持人员,并与他们核实您是否能够更改 Web 服务器的文档根目录并维护标准 Laravel 文件结构以保护您需要远离窥探的文件。


0
投票

符号链接,例如相对于链接或绝对的路径。首先应该起作用的是

cd public_html
,您可以删除存储目录(如果存在)。然后运行
ln -s ./Laravel/storage/app/public ./storage
。存储目录现在应该链接到您的私人存储,请参阅
ls -l

© www.soinside.com 2019 - 2024. All rights reserved.