Symfony部署至Heroku后注册用户出现500错误及数据库连接拒绝问题
解决Symfony部署Heroku后数据库连接拒绝问题
从日志看,你的应用仍在尝试连接本地PostgreSQL(127.0.0.1:5432),而非Heroku提供的远程数据库实例,这是导致连接拒绝的核心原因。按以下步骤排查修复:
确保DATABASE_URL读取Heroku环境变量
打开项目根目录的.env文件,将DATABASE_URL设置为从环境变量获取,不要硬编码本地连接信息:DATABASE_URL=${DATABASE_URL}若存在
.env.prod,同样要保证该文件中的DATABASE_URL使用上述配置,而非本地地址。检查Doctrine配置的环境变量解析
打开config/packages/doctrine.yaml,确认生产环境的数据库URL配置使用resolve:前缀,确保环境变量被正确解析:doctrine: dbal: url: '%env(resolve:DATABASE_URL)%'验证Heroku的DATABASE_URL环境变量
通过Heroku CLI查看应用的环境变量,确认存在正确的远程数据库连接地址:heroku config:get DATABASE_URL --app 你的应用名称输出的URL应该是类似
postgres://xxxx:yyyy@ec2-xx-xx-xx-xx.compute-1.amazonaws.com:5432/zzzz的远程地址,而非本地地址。清除生产环境缓存
部署后执行缓存清除命令,确保Symfony加载最新的数据库配置:heroku run php bin/console cache:clear --env=prod也可以在
composer.json的scripts中添加自动执行逻辑,避免每次部署手动操作:"scripts": { "post-install-cmd": [ "@auto-scripts", "php bin/console cache:clear --env=prod" ] }
内容的提问来源于stack exchange,提问作者ch3ssnut
相关产品推荐
相关产品推荐

