Symfony应用EasyAdmin的VinylCrudController页面Error500求助
问题详情
- 生产环境(
APP_ENV=prod)部署在Heroku,已配置Procfile和buildpacks - EasyAdmin的
VinylCrudController页面访问返回500错误,同目录下的ArtistCrudController可正常运行 - Heroku日志仅返回500状态码,无具体错误详情
已尝试操作
- 将Symfony从6.1升级至6.4
- 修改
VinylCrudController及关联页面代码,问题未解决
Heroku日志
2023-12-14T11:18:15.266498+00:00 app[web.1]: 10.1.47.180 - - [14/Dec/2023:11:18:15 +0000] "GET /admin?crudAction=index&crudControllerFqcn=App%5CController%5CAdmin%5CVinylCrudController HTTP/1.1" 500 101
1 "http://gpuppy-vinyl-ce7c530d2c4f.herokuapp.com/admin?crudAction=index&crudControllerFqcn=App%5CController%5CAdmin%5CArtistCrudController" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
2023-12-14T11:18:15.267007+00:00 heroku[router]: at=info method=GET path="/admin?crudAction=index&crudControllerFqcn=App%5CController%5CAdmin%5CVinylCrudController" host=gpuppy-vinyl-ce7c530d2c4f.heroku
app.com request_id=f6ecfd1e-3a7a-4ac9-bb3d-43bcf9d5366f fwd="92.131.246.104" dyno=web.1 connect=0ms service=19ms status=500 bytes=1307 protocol=http.
排查建议
1. 临时开启生产环境详细错误日志
生产环境默认隐藏错误详情,可修改config/packages/prod/monolog.yaml将日志级别调至debug:
monolog: handlers: main: level: debug
部署后重新访问错误页面,查看Heroku日志获取具体错误信息(排查完成后记得改回原级别)。
2. 检查VinylCrudController与实体配置
- 确认
VinylCrudController的configureFields方法中,所有字段对应实体属性存在,无拼写错误 - 检查是否使用了不存在的关联实体、自定义字段类型或未注册的表单类型
- 对比
ArtistCrudController的配置,重点排查关联字段、过滤器、自定义操作的差异
3. 验证实体映射与数据库一致性
- 本地运行
php bin/console doctrine:schema:validate检查实体映射是否正确,再部署到Heroku验证 - 通过
php bin/console doctrine:migrations:status确认Heroku数据库表结构与实体定义一致,无未执行的迁移
4. 检查依赖兼容性
- 确认EasyAdmin版本与Symfony 6.4兼容,查看
composer.lock中的版本信息,必要时更新EasyAdmin到对应兼容版本 - 运行
composer diagnose排查Doctrine、表单组件等依赖的版本冲突问题
5. 本地模拟生产环境测试
- 本地设置
APP_ENV=prod,执行php bin/console cache:clear --env=prod后访问页面,尝试复现错误以便本地调试
内容的提问来源于stack exchange,提问作者Gpuppy

