【问题标题】:How to access Laravel symbolic link when uploaded to Heroku上传到 Heroku 时如何访问 Laravel 符号链接
【发布时间】:2018-11-23 18:36:39
【问题描述】:

我正在制作一个 laravel webapp,我正在尝试访问存储符号链接 /storage/images/face-ph.png 中的图像。

当我像这样在本地执行它时它可以工作:

<img src="/storage/images/face-ph.png>

但是,当我将它上传到 Heroku 时,它找不到路径。

【问题讨论】:

  • php artisan storage: 链接不工作?
  • @AdnanMumtaz 我在本地执行它并找到文件,但是当我将它上传到 Heroku 时它找不到文件。
  • 你试过在heroku上运行这个php artisan storage:link吗?
  • @AdnanMumtaz 你如何在 Heroku 上运行它?我确实在 cdm 本地运行它,但我不知道如何在 heroku 中运行它。

标签: php laravel heroku


【解决方案1】:

阿德南的回答有两个问题;

  • 如果您使用heroku run bash 执行命令,它只会在一次性测功机中执行。所以这不会影响现场测功机。
  • php artisan storage:link 命令生成带有绝对路径的符号链接。因此,当您在构建期间运行它时,它会映射临时构建目录的绝对路径,而不是测功机上的最终应用目录。

我使用了一个简单的相对符号链接来链接两个目录并将其添加到您的 git 存储库中:

cd public/ && ln -s ../storage/app/public storage && cd ..

【讨论】:

  • 我应该在 heroku bash 中写这个吗?我做到了,同样的 404 错误仍然存​​在。它还说“存储/公共”:文件存在
  • 不,您的 Heroku bash 命令仅在一次性测功机中执行,因此不会影响您的公共应用程序。只需在本地运行该命令并确保更改已提交到您的 git 历史记录,然后再推送到 Heroku。
  • @r.vanlaarhoven 谢谢从昨天开始一直在寻找这个终于成功了。
  • @r.vanlaarhoven。你很聪明。事实证明,在公用文件夹外和公用文件夹内创建符号链接确实有很大的影响。谢谢兄弟!
  • 它在 id 编辑 .gitignore 以允许符号链接提交时起作用。谢谢
【解决方案2】:

如果您使用 Heroku 进行部署,您可以尝试

heroku run bash
php artisan storage:link

heroku run /app/php/bin/php /app/www/artisan storage:link

您可以使用绝对路径或相对路径来运行二进制文件

希望对你有帮助

【讨论】:

  • 刚刚试过这个。它创建了符号链接,但里面什么都没有
  • 确保您的存储文件夹不是.gitignore
  • 不是。所以现在符号链接与我想要的图像一起存在。我使用的路线是<img src="/storage/images/face-ph.png">,那是正确的路径吗?在我的存储文件夹中,我有一个图像文件夹。
  • public/storage/images/face-ph.png获取图像的正确路径
  • 是的 public/storage/images/face-ph.png 是正确的道路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 2017-07-23
  • 2013-05-22
  • 2018-06-20
  • 1970-01-01
相关资源
最近更新 更多