Wordpress

WordPress preso no modo de manutenção: apagar o arquivo .maintenance

O site inteiro devolve 503 com “Momentaneamente indisponível para manutenção programada. Confira novamente em um minuto” e o minuto virou meia hora. Isso é um arquivo, não um bug: a atualização de plugin ou de core morreu no meio e deixou o .maintenance na raiz do WordPress. Apagou, o site volta na hora.

Por SSH, na pasta onde ficam o wp-config.php e a wp-includes:

cd /var/www/seusite/html
ls -la .maintenance
rm .maintenance
sudo -u www-data wp maintenance-mode status

Se preferir não apagar na mão, wp maintenance-mode deactivate remove o mesmo arquivo. Por FTP é igual, com um detalhe: o nome começa com ponto, então ligue a exibição de arquivos ocultos no FileZilla, senão você jura que ele não existe.

Por que ele não sumiu sozinho

O arquivo tem uma linha só, com a variável $upgrading e o timestamp de quando a atualização começou. A wp_is_maintenance_mode(), na wp-includes/load.php, ignora esse arquivo assim que o carimbo passa de dez minutos. Se a tela insiste depois disso, ou o timestamp está no futuro (relógio do servidor fora de hora) ou alguma rotina recria o arquivo a cada tentativa. Se a página for personalizada, quem manda é o wp-content/maintenance.php, não o core.

Termine o que ficou pela metade

Apagar o arquivo tira a tela, mas não garante que o update foi até o fim. Core cortado no meio deixa arquivo novo com banco velho, e aí sobra erro no admin. Com backup do banco feito, feche o ciclo:

sudo -u www-data wp core version
sudo -u www-data wp core update
sudo -u www-data wp core update-db
sudo -u www-data wp plugin list --update=available

Rodar a atualização pelo WP-CLI em vez do painel tira o timeout de navegador da jogada, que é justamente o que derruba o processo na maioria das vezes.

Antes de sair, olhe wp-content/upgrade e wp-content/upgrade-temp-backup. As duas vivem entulhadas de resto de atualização abortada e podem ser esvaziadas com o site no ar — só não faça isso com um update rodando, porque a segunda guarda o backup que o WordPress usa pra desfazer a instalação.

Post Recentes

Preço a partir de no WooCommerce: esconder o intervalo do produto variável

Troque o intervalo R$ 49,00 – R$ 129,00 do produto variável por A partir de R$ 49,00 com o filtro…

1 dia atrás

Massaction Magento 2: ação em massa na grid da sua UI listing

Grid do admin sem checkbox e com o botão Ações vazio? Falta o selectionsColumn e o nó massaction no listing.xml,…

1 dia atrás

Template part não aparece: parts/header.html e o theme.json do tema de blocos

Criou parts/header.html e o Editor de Site não lista a parte? Declare templateParts no theme.json e apague a versão salva…

2 dias atrás

CLS no WordPress: imagem sem width e height pulando a página no mobile

Como matar o aviso "Image elements do not have explicit width and height" do Lighthouse trocando o img manual do…

3 dias atrás

CSRF no CodeIgniter 4: The action you requested is not allowed no AJAX

O primeiro POST via AJAX passa e o segundo estoura 403 porque o token foi regenerado. Envie o hash no…

4 dias atrás

Certbot renew sem reload do nginx: o navegador ainda vê o certificado vencido

O certbot diz que renovou, o navegador insiste que o certificado expirou. Compare as datas com openssl e crie o…

4 dias atrás