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

Laravel 8部署Heroku执行php artisan optimize的缓存文件问题

解决方案

一、Heroku 环境运行php artisan optimize的两种方式

  • 临时调试执行:安装Heroku CLI工具后,在本地终端执行heroku run php artisan optimize --app 替换为你的Heroku应用名即可直接在运行的实例中执行命令,但这种方式生成的缓存存放在dyno的临时文件系统中,只要dyno重启、重新部署,缓存就会被清空,无法长期保留。
  • 部署自动执行(长期生效方案):将命令配置到Heroku的构建流程中,具体操作是修改项目根目录的composer.json文件,在scripts节点下新增post-install-cmd配置:
{
    "scripts": {
        "post-install-cmd": [
            "@php artisan optimize",
            // 保留composer原有的其他post-install命令不要删除
        ]
    }
}

二、解决缓存文件自动丢失、生成失败的问题

你之前操作后没有生成缓存,大概率是两个配置问题:

  1. 不要把项目bootstrap/cache目录加入.gitignore,即使目录为空也要提交到GitHub仓库,不然构建阶段找不到对应目录会导致缓存生成失败。
  2. 不要在.gitignore中添加bootstrap/cache/*.php的忽略规则,构建阶段生成的缓存文件会被打包到应用的dyno基础镜像中,不是运行时生成的临时文件,后续dyno重启也不会被删除。

注意事项

Laravel 8的optimize命令会同时生成配置缓存和路由缓存,要确保你的项目代码中所有调用环境变量的地方都用config()助手函数,不要直接用env()函数,否则配置缓存生成后env()调用会返回null,导致业务异常。


内容的提问来源于stack exchange,提问作者Phạm Tiến Hải

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:00:04