Mapbender开发环境搜索正常生产环境报500错误该如何排查解决?
排查解决步骤
Firefox提示的strict-origin-when-cross-origin Referrer策略为浏览器默认安全配置,和本次500错误无关,无需针对该配置做调整
- 第一步:清空生产环境缓存并修复权限
Mapbender基于Symfony框架,生产环境的配置、服务容器都会全量缓存,修改配置后必须手动清理才会生效。切换到/var/www/mapbender1根目录执行以下命令:
注意必须使用web服务运行用户(默认是www-data)操作缓存目录,否则会出现缓存读写权限异常导致配置不生效# 用Apache运行用户身份清理生产缓存 sudo -u www-data php app/console cache:clear --env=prod # 若上述命令执行失败,可直接删除缓存目录再重建并修复权限 sudo rm -rf app/cache/prod sudo mkdir -p app/cache/prod sudo chown -R www-data:www-data app/cache/prod sudo chmod -R 755 app/cache/prod - 第二步:校验生产环境数据库连接配置加载情况
开发环境默认会加载所有配置文件并实时更新,生产环境仅会加载app/config/config_prod.yml内声明的配置。打开该文件确认你自定义的mobh_data_connection连接配置已经被导入,或者直接将该连接的配置项补充到生产环境的doctrine配置块中。 - 第三步:核对搜索路由组件的数据源配置
打开你创建的地图应用后台,找到搜索路由元素的配置页,确认数据源连接名称填写正确:如果你的业务数据存储在默认数据库中就填default,如果确实需要使用独立的mobh_data_connection连接,要确认该连接在app/config/config.yml的doctrine.dbal.connections配置项中已明确定义,名称完全匹配无拼写错误。 - 第四步:验证容器服务是否注册成功
执行以下命令查看生产环境的服务容器中是否存在目标数据库连接服务:
如果执行后无输出,说明该连接服务确实未在生产环境注册,回到第二步检查配置即可。sudo -u www-data php app/console debug:container --env=prod | grep mobh_data_connection - 第五步:临时开启生产环境debug(可选)
如果上述操作后问题仍存在,可临时修改web/app.php文件,将$kernel = new AppKernel('prod', false);中的第二个参数false改为true开启debug模式,复现搜索操作即可看到完整的报错链路,排查完成后务必改回false关闭debug,避免生产环境泄露敏感信息。
内容的提问来源于stack exchange,提问作者Techie_Gus
相关产品推荐
相关产品推荐

