Laravel 11升级部署Heroku报错:SQLite数据库文件不存在(未用数据库)
问题根源
报错来自Laravel的Session系统——默认使用database驱动,即便你的业务代码没用到数据库,Session仍会尝试连接默认的SQLite数据库,而Heroku部署环境中不存在/app/database/database.sqlite文件,因此触发报错。
解决方案
1. 切换Session驱动为无依赖类型
选择不需要数据库的Session驱动,推荐优先用cookie(适配无数据库场景),也可选file(需处理存储目录):
通过环境变量修改:
在Heroku的环境变量中添加/修改:SESSION_DRIVER=cookie本地开发的
.env也可同步修改,保持环境一致。或直接修改配置文件:
编辑config/session.php,将驱动默认值改为cookie:'driver' => env('SESSION_DRIVER', 'cookie'),
2. 若选择file驱动(需注意Heroku临时文件特性)
如果偏好file驱动,需确保Session存储目录存在,在composer.json中添加部署后自动创建目录的脚本:
"scripts": { "post-install-cmd": [ "@php artisan storage:link", "mkdir -p storage/framework/sessions" ] }
提交修改后重新部署到Heroku即可。
3. 确认APP_KEY已配置
使用cookie驱动时,必须确保Heroku环境中设置了APP_KEY,可通过Heroku CLI执行:
heroku config:set APP_KEY=你的本地APP_KEY值
(本地.env中的APP_KEY可直接复用)
额外说明
你的config/database.php仅配置了迁移相关项,Laravel 11会使用默认数据库连接配置(默认SQLite),但只要Session不使用database驱动,就不会触发该报错,无需额外修改数据库配置。
内容的提问来源于stack exchange,提问作者Salar Houshvand
相关产品推荐
相关产品推荐

