Configurações do Magento 2

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.

Post Recentes

json_validate no PHP 8.3: conferir se o JSON é válido sem decodificar

A função json_validate do PHP 8.3 diz se a string é JSON válido sem montar array nem objeto. Serve para…

6 horas atrás

Chave de API fora do Git: .env, getenv() e o que fazer se ela já vazou

Tire a chave de API do código com variável de ambiente, bloqueie o .env no nginx e entenda por que…

13 horas atrás

HPOS no WooCommerce: ativar as tabelas wc_orders e migrar os pedidos

A opção de armazenamento de pedidos travada em posts e a sincronização que nunca termina: como migrar para as tabelas…

23 horas atrás

str_contains no PHP 8: parar de comparar strpos com !== false

Troque strpos e substr por str_contains, str_starts_with e str_ends_with no PHP 8, com o polyfill para quem ainda mantém servidor…

1 dia atrás

Data Patch Magento 2: criar atributo de produto sem InstallData

Copiou um InstallData.php de tutorial antigo e o atributo não apareceu depois do setup:upgrade? Veja a classe de Data Patch…

2 dias atrás

Criar cupom no WooCommerce por código: WC_Coupon com validade e limite

Função pronta para gerar um cupom único por cliente depois do pedido concluído, com WC_Coupon, data de expiração, limite de…

2 dias atrás