You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署Laravel后无法访问storage文件夹内resume.pdf的问题排查

解决Laravel项目在Heroku上无法打开resume.pdf的问题

我之前也碰到过几乎一模一样的问题——本地测试完全正常,一部署到Heroku就打不开PDF,核心问题确实和文件路径配置以及Heroku的特殊文件系统有关,给你一步步梳理解决方案:

1. 确认PDF文件的正确存放位置

首先得确保你的resume.pdf是放在storage/app/public/目录下的,这是Laravel官方指定的公开可访问文件存储目录,只有这里的文件能通过Web服务器直接访问。

2. 修复Heroku上的存储符号链接

本地环境下你大概率手动执行过php artisan storage:link,这个命令会在public/目录下创建一个指向storage/app/public/的符号链接,让Web服务器能找到存储目录里的公开文件。但Heroku的文件系统是临时无状态的,每次部署都会重置,所以这个符号链接不会保留下来。

你需要把storage:link命令加到composer.json的post-install-cmd里,确保每次部署后自动创建链接:

"post-install-cmd": [
    "php artisan clear-compiled",
    "php artisan optimize",
    "php artisan storage:link", // 新增这一行
    "chmod -R 775 public/",
    "chmod -R 775 storage/"
]

3. 修正前端的链接路径

别再用硬编码的相对路径"storage/resume.pdf"了,改用Laravel的asset()辅助函数生成绝对URL,这样不管是本地还是Heroku环境,都会自动生成正确的访问路径:

<a class="btn btn-xl btn-outline-light" href="{{ asset('storage/resume.pdf') }}" target="_blank">
    <i class="...">查看简历</i>
</a>

额外检查点

  • 部署后可以通过heroku logs --tail命令查看日志,确认storage:link是否执行成功,有没有权限相关的报错(不过你的chmod命令已经处理了大部分权限问题)。
  • 确保resume.pdf已经提交到Git仓库(如果是静态文件的话),如果是动态生成的文件,要保证在Heroku上能正确生成到storage/app/public/目录中。

这样调整后,应该就能在Heroku上正常打开PDF文件了。

内容的提问来源于stack exchange,提问作者Hclee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:25:02