管理员改了SMTP或支付开关,页面提示保存成功,当时也生效;下一次部署或者几分钟后又回到旧值。清缓存没用,因为真正的值被部署配置接管了。

bin/magento config:show payment/checkmo/active
bin/magento config:show --scope=websites --scope-code=base payment/checkmo/active
grep -R "payment/checkmo/active" app/etc/config.php app/etc/env.php -n

被 app:config:dump导出的路径可能写在config.php或env.php,后台输入框看得到但数据库值不再是最终来源。部署脚本如果每次跑 app:config:import,会把仓库中的旧值重新压回去。

先决定谁是配置源

  • 非敏感、各环境一致的配置可以进config.php;
  • 密码、密钥等敏感值放env.php或外部Secret;
  • 运营需要在后台调整的值不要锁进部署文件;
  • Website/Store级值要确认导出和读取的Scope一致。

解除锁定要通过Magento命令和正式发布流程,不要直接编辑生产文件后忘记同步仓库。改完后比较 core_config_data、config:show和应用实际读取值,并执行一次完整部署,确认不会再次回滚。