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

Heroku部署WordPress项目图片丢失问题求助

解决Heroku上WordPress图片重启后失效的问题

这个问题我之前帮好几个开发者踩过坑,核心原因其实是Heroku的临时文件系统(Ephemeral Filesystem)——Heroku的每个dyno(运行容器)重启后,本地存储的所有文件都会被重置回初始部署状态,你上传到WordPress本地wp-content/uploads的图片自然就没了,导致图库占位、前端图片消失。

下面是具体的解决方案,按步骤来就能彻底解决:

1. 改用外部持久化存储(核心方案)

Heroku不适合存储用户上传的内容,必须把媒体文件放到外部对象存储服务,比如AWS S3、Cloudflare R2这类,这里以AWS S3为例:

  • 先在AWS控制台创建一个S3存储桶,记得配置公开读取权限(因为前端要加载图片),同时设置好CORS规则允许你的Heroku域名访问。
  • 在WordPress后台安装WP Offload Media插件(或者类似的存储同步插件),进入插件设置页面,关联你的S3存储桶,配置上传路径、文件访问权限等。
  • 开启“自动上传到存储桶”选项,之后所有新上传的图片都会直接存到S3,不再占用Heroku本地空间。

2. 迁移已有的本地图片到外部存储

如果之前已经上传过图片,需要把它们同步到存储桶并更新数据库链接:

  • 把Heroku上wp-content/uploads文件夹里的所有文件,通过AWS CLI或者S3控制台上传到你的存储桶对应路径。
  • 用插件的“媒体库迁移”工具,批量更新WordPress数据库里的图片URL,把本地路径替换成S3的地址。

3. 验证配置是否生效

  • 上传一张新图片到媒体库,检查图片的URL是不是S3的地址(比如https://your-bucket.s3.amazonaws.com/2024/05/test.jpg),而不是Heroku域名下的本地路径。
  • 手动重启Heroku dyno:在终端执行heroku restart,之后刷新WordPress前端和后台图库,确认所有图片都能正常显示,不会再出现空白占位。

额外注意事项

  • 永远不要依赖Heroku的本地文件系统存储用户生成内容,除了重启丢失,dyno扩容时多个实例之间也无法共享本地文件。
  • 如果不用AWS S3,也可以选择其他兼容S3协议的存储服务,比如DigitalOcean Spaces,配置步骤基本一致。
  • 确保存储桶的权限配置正确,避免出现图片无法加载的403错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:27