Campo bloqueado no admin do Magento 2: config travada pelo env.php

Stores, Configuration, o campo que precisa mudar está bem ali — cinza, sem cursor, com um aviso de que o valor vem de um arquivo de configuração. Não é permissão do seu usuário nem cache velho: alguém gravou a chave dentro do array system do app/etc/env.php, e valor de arquivo sempre ganha do banco.

Descubra o caminho exato da chave

Cada campo do painel vira um caminho de três níveis, tipo web/unsecure/base_url. Confirme o valor e vasculhe os dois arquivos que podem estar travando:

bin/magento config:show web/unsecure/base_url
grep -n "base_url" app/etc/env.php app/etc/config.php

'system' => [
    'default' => [
        'web' => [
            'unsecure' => [
                'base_url' => 'https://loja.com.br/',
            ],
        ],
    ],
],

Duas coisas colocam valor ali. O bin/magento config:set --lock-env caminho/da/chave valor escreve no env.php de propósito, uma chave por vez. Já o bin/magento app:config:dump despeja a configuração inteira nos arquivos e trava dezenas de campos numa tacada só: o que é compartilhado vai pro app/etc/config.php e o sensível pro env.php. É o susto clássico depois que alguém roda o dump pra montar pipeline de deploy e some com metade do painel.

Devolvendo o campo pro painel

Não existe um config:unlock no Open Source. Você tira a chave do array na mão, deixando o resto do arquivo intacto — copie o env.php antes, porque uma vírgula fora do lugar derruba a loja inteira. Depois limpa o cache de configuração e regrava o valor no banco:

cp app/etc/env.php app/etc/env.php.bak
bin/magento cache:clean config
bin/magento config:set web/unsecure/base_url https://loja.com.br/
bin/magento config:show web/unsecure/base_url

Enquanto a chave continuar no arquivo, o config:set sem --lock-env se recusa a gravar e avisa que o valor já está bloqueado. Escopo também conta: o mesmo caminho pode estar preso no default e livre em website, então rode o config:show com --scope=websites --scope-code=base antes de concluir que resolveu. E quando a chave for base_url de produção ou credencial de pagamento, deixar travada em arquivo é proposital — aí versione o env.php do ambiente em vez de liberar o campo pra quem tem acesso ao painel.

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *