# Como corrigir atualização automática do WordPress que falha

A atualização automática falha quando o WordPress não consegue concluir sozinho a atualização de núcleo, plugins ou temas. As causas mais comuns são permissões de arquivo que bloqueiam a escrita, o WP-Cron que não dispara e a falta de acesso direto ao sistema de arquivos do servidor.

## O que é a atualização automática que falha?

O WordPress aplica atualizações em segundo plano: o agendador WP-Cron dispara o processo, o sistema baixa os arquivos novos e os grava sobre os antigos. Para isso, o PHP precisa ter permissão de escrita nos arquivos do site e um método de acesso ao sistema de arquivos. Quando a permissão é negada, o cron não roda ou a conexão com os servidores do WordPress.org falha, a atualização automática é abortada e o site fica numa versão desatualizada ou com um aviso de falha na tela de atualizações.

## Como identificar

- Mensagem "The update cannot be installed because we will be unable to copy some files." na tela de atualização.
- E-mail do WordPress com o assunto "An automatic update has failed" ou "Your site has been scheduled for an update".
- A versão do núcleo, plugins ou temas continua antiga mesmo com a atualização automática ligada.
- A tela de atualização pede credenciais de FTP a cada tentativa, em vez de atualizar direto.

**Antes de começar:** Faça backup completo antes de mexer em permissões ou substituir arquivos do núcleo via FTP. Use FS_METHOD direct apenas quando o usuário do PHP for o dono dos arquivos; em hospedagens compartilhadas mal configuradas, isso pode expor arquivos a outros usuários do servidor.

## Como prevenir

- Mantenha pastas em 755 e arquivos em 644, com wp-content gravável pelo usuário do PHP
- Configure um cron real no servidor apontando para o wp-cron.php em sites de baixo tráfego
- Monitore o espaço em disco e libere a saída para api.wordpress.org no firewall do servidor

Erros relacionados

- [Como corrigir Another update is currently in progress](https://full.services/wp-fixer/corrigir-another-update-in-progress-wordpress/)
- [Como sair do modo de manutenção travado](https://full.services/wp-fixer/corrigir-modo-manutencao-travado-wordpress/)
- [Como corrigir Destination folder already exists](https://full.services/wp-fixer/corrigir-destination-folder-exists-wordpress/)

## Causa

- Permissões de arquivo erradas em wp-content ou nos arquivos do núcleo, bloqueando a escrita do PHP.
- WP-Cron desativado ou sem disparar, então a atualização agendada em segundo plano nunca roda.
- Falta de acesso direto ao sistema de arquivos, fazendo o WordPress pedir FTP a cada atualização.
- Conexão com api.wordpress.org bloqueada por firewall, impedindo o download dos arquivos novos.
- Espaço em disco esgotado no servidor, sem onde gravar os arquivos baixados da atualização.

## Como resolver

1. Ligue o modo de depuração: edite o wp-config.php para registrar o erro real da atualização no log, em vez do aviso genérico na tela:

```
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
```

2. Force o método direto de arquivos: se o WordPress fica pedindo FTP, adicione a constante de método direto no wp-config.php para ele gravar os arquivos sem credenciais, quando a permissão permitir.

```
define('FS_METHOD', 'direct');
```

3. Corrija as permissões: via FTP, ajuste as pastas para 755 e os arquivos para 644, e garanta que wp-content seja gravável pelo usuário do PHP. Permissão errada é a causa mais comum.
4. Teste o WP-Cron: confirme se o cron está disparando. Se o site tem pouco tráfego, configure um cron real no servidor apontando para o wp-cron.php em vez de depender das visitas.
5. Atualize manualmente: se a automática insistir em falhar, atualize pelo botão em Painel > Atualizações, ou via FTP substituindo as pastas wp-admin e wp-includes pela versão nova, sem tocar em wp-content.

## Código

```php
// wp-config.php — destrava a atualizacao automatica.
// Coloque ANTES da linha "That's all, stop editing!".
define( 'FS_METHOD', 'direct' );        // grava arquivos sem pedir FTP
define( 'WP_AUTO_UPDATE_CORE', true );  // liga a atualizacao automatica do nucleo
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );         // registra a falha real em wp-content/debug.log
```

## Perguntas frequentes

### Por que o WordPress pede FTP toda vez que tento atualizar?

Porque ele não detectou que pode gravar os arquivos diretamente e recorre ao FTP como alternativa. Adicionar define('FS_METHOD', 'direct'); no wp-config.php faz o WordPress gravar direto, desde que o usuário do PHP seja o dono dos arquivos do site.

### Qual permissão de arquivo o WordPress precisa para atualizar sozinho?

Pastas em 755 e arquivos em 644, com a pasta wp-content gravável pelo usuário que roda o PHP. Permissão mais restritiva impede a escrita e aborta a atualização; permissão mais aberta, como 777, é desnecessária e insegura.

### A atualização automática depende do WP-Cron?

Sim. O WP-Cron agenda e dispara a atualização em segundo plano, mas só roda quando alguém visita o site. Em sites de baixo tráfego ele pode não disparar a tempo. Configurar um cron real no servidor apontando para o wp-cron.php garante que a atualização aconteça.

### Recebi um e-mail de An automatic update has failed. O que faço?

Esse e-mail avisa que a atualização em segundo plano não concluiu. Entre em Painel > Atualizações e tente atualizar manualmente. Se falhar de novo, ligue o WP_DEBUG_LOG para ver o erro real, que costuma ser permissão de arquivo ou falta de espaço em disco.

### É seguro usar FS_METHOD direct?

É seguro quando o usuário do PHP é o dono dos arquivos do site, o caso da maioria das hospedagens modernas. Em servidores compartilhados mal configurados, onde vários sites rodam sob o mesmo usuário, vale confirmar com a hospedagem antes de forçar o método direto.

### A atualização automática some com meu conteúdo se falhar?

Não. Uma falha de atualização não apaga o conteúdo, que fica no banco de dados. O risco é a atualização parar pela metade e deixar arquivos do núcleo incompletos. Por isso, mantenha backup e confirme a versão depois de cada atualização concluída.

**Fonte:** [WordPress.org — Upgrading WordPress](https://developer.wordpress.org/advanced-administration/upgrade/upgrading/)
