【问题标题】:Laravel Storage symlinkLaravel 存储符号链接
【发布时间】:2019-01-11 13:09:57
【问题描述】:

我正在尝试访问存储在 storage/app/.../.../file.png 中的文件。

我创建了一个符号链接,将我的存储文件夹链接到 public/storage。

当我尝试访问相应的文件时,我的服务器会抛出 404,表示找不到文件。显然我没有以正确的方式访问它,但我不知道要更改什么。

<img src="{{asset('storage/app/puppy/18/ax2Fk08nyWrV6TwTOnsXNCkNGuIdFebB7TTfPYGb.png')}}" alt="">

【问题讨论】:

  • 你做了php artisan storage:link吗?

标签: php laravel symlink


【解决方案1】:

当您在 laravel 中创建符号链接时,它会创建 storage/app/public 文件夹到 public/storage 文件夹的符号链接。这意味着如果您想公开访问任何文件,请将所有文件放在 storage/app/public 文件夹中并像这样访问它

<img src="{{asset('storage/puppy/18/test.png')}}" alt="">

这里的意思是文件test.png应该物理上在storage/app/public/puppy/18文件夹中。

执行 php artisan storage:link 在 laravel 中创建符号链接

希望你清楚

【讨论】:

  • 你太棒了。你似乎是最清楚地回答我所有问题的人。
  • 啊,很高兴为您提供帮助。快乐编码
【解决方案2】:

试试这个。

<img src="{{asset('puppy/18/ax2Fk08nyWrV6TwTOnsXNCkNGuIdFebB7TTfPYGb.png')}}" alt="">

【讨论】:

    【解决方案3】:

    对于共享主机,请尝试以下解决方案

    代码:

    1) 删除 public_html/public/storage 中的 storage 文件夹

    2) 在 public_html 文件夹中创建一个 php 文件,例如 symlink.php

    3) 将代码添加到 symlink.php 文件中

    $targetFolder = $_SERVER['DOCUMENT_ROOT'].'/storage/app/public';
    $linkFolder = $_SERVER['DOCUMENT_ROOT'].'/public/storage';
    symlink($targetFolder,$linkFolder);
    echo 'Symlink process successfully completed';
    

    4) 访问网站 example.com/symlink.php

    就是这样……

    来自 youtube 的视频网址 => https://www.youtube.com/watch?v=svyN8-PjGHc

    【讨论】:

    • 我无法访问该文件,它给出了 404 LOL
    • 可能有问题或您的托管服务提供商不支持符号链接
    • 我的托管没有问题,因为我们将域的根目录设置为domain.com/public,所以您无法访问根目录中的文件是正常的。我的主机支持符号链接,我通过 SSH 解决了它
    • 这个想法对我有用!它确实抱怨未能创建符号链接,因为$_SERVER['DOCUMENT_ROOT'] 返回了包含公用文件夹的路径。我最终回显了路径并手动输入和更改了 symlink 函数中的变量,该函数运行成功!
    猜你喜欢
    • 2018-06-20
    • 2017-12-29
    • 1970-01-01
    • 2021-05-17
    • 2017-05-02
    • 2017-12-31
    • 1970-01-01
    • 2019-06-20
    • 2022-12-09
    相关资源
    最近更新 更多