Corrigir cURL Error 28 no WordPress — Guia passo a passo

O cURL (Client URL) trata as requisições HTTP/HTTPS que permitem ao seu site WordPress comunicar-se com APIs, serviços externos e (às vezes) com outros endpoints do próprio servidor. Quando uma dessas requisições demora mais do que o tempo limite configurado, o WordPress pode registrar o famoso “cURL error 28: Connection timed out”.
Principais causas:
- Interferência de firewall ou plugin de segurança do WordPress.
- Problemas no servidor DNS ou com um plugin mal comportado.
- Timeout muito baixo configurado no servidor/hospedagem.
- Problemas SSL/TLS ou configuração incorreta do certificado.
Importante: este artigo foca em diagnósticos práticos que qualquer administrador de site ou desenvolvedor pode executar. Se você usar hospedagem gerenciada, abra um chamado com o suporte e descreva os testes que realizou.
O que é o erro cURL 28 no WordPress?
Em uma linha: o WordPress não recebeu resposta de uma requisição externa dentro do tempo esperado.
Termos rápidos:
- cURL: biblioteca que faz requisições HTTP/HTTPS.
- Timeout: tempo máximo que a aplicação espera por uma resposta.
- API: interface para comunicação entre serviços.
Verificações rápidas (antes dos passos avançados)
- Confirme que o servidor utiliza versões atualizadas de cURL, PHP e OpenSSL.
- Tente acessar o site e a área administrativa com outro navegador ou em modo incógnito.
- Verifique o relatório de saúde do site (Site Health) no WordPress: Ferramentas → Saúde do Site.
Passo a passo de solução
1) Desative temporariamente o firewall ou plugin de segurança
Se você usa firewall de aplicativo (plugin como Wordfence, Sucuri, etc.), desative-o temporariamente e refaça a ação que gerou o erro.
- Faça login no painel do WordPress.
- Vá em Plugins, localize o plugin de segurança e clique em Desativar.
Se o erro desaparecer, analise os logs do firewall para ver quais requisições foram bloqueadas e crie exceções seguras. Não deixe o site sem proteção por mais tempo do necessário.
2) Desative todos os plugins para isolar conflito
- Faça login no WordPress.
- Vá a Plugins → Plugins Instalados.
- Marque o checkbox para selecionar todos os plugins.
- Selecione Desativar no menu suspenso.
Ative os plugins um a um e teste após cada ativação para identificar qual causa o problema.
Nota: se você não conseguir acessar o painel, renomeie a pasta wp-content/plugins via FTP/SFTP para desativar todos os plugins.
3) Troque o servidor DNS (cliente Windows exemplo)
- Pressione Windows + R para abrir Executar.
- Digite ncpa.cpl e OK para abrir Conexões de Rede.
- Clique com o botão direito na conexão ativa e vá em Propriedades.
- Selecione Protocolo IP Versão 4 (TCP/IPv4) e clique em Propriedades.
- Escolha “Usar os seguintes endereços de servidor DNS” e insira 8.8.8.8 como Preferido e 8.8.4.4 como Alternativo.
- Salve OK.
Trocar para DNS público (Google, Cloudflare 1.1.1.1) pode eliminar problemas de resolução que causam timeouts.
4) Limpe o cache do navegador
- Abra o navegador (ex.: Chrome).
- Clique no menu (três pontos) → Configurações → Privacidade e segurança → Limpar dados de navegação.
- Escolha “Todo o período”, marque Cookies e imagens em cache e clique em Limpar dados.
Isso elimina falsos positivos causados por recursos em cache.
5) Verifique a configuração SSL/TLS
Use a ferramenta SSL Labs (Qualys) para testar o certificado do seu site:
- Acesse SSL Labs Server Test.
- Insira a URL do site e clique em Submit.
Se a ferramenta apontar erros, reinstale o certificado ou contate o emissor do TLS/SSL. Uma configuração SSL incorreta pode impedir conexões externas.
6) Verifique limites do servidor e versão do cURL
- No painel WordPress vá em Ferramentas → Saúde do Site → Informações → Servidor.
- Verifique versões de cURL, OpenSSL e valores como memória, tempo máximo de execução (max_execution_time) e limites do PHP.
Também é útil checar diretamente no servidor (SSH) estes comandos:
curl --version
php -i | grep curl
php -i | grep OpenSSL
Se o cURL ou OpenSSL estiverem desatualizados, peça ao provedor de hospedagem para atualizar. Se o host impõe timeout muito baixo no firewall ou proxy, peça aumento temporário do limite.
7) Aumente o timeout das requisições HTTP no WordPress
Você pode aumentar o timeout global do HTTP no WordPress adicionando um filtro no arquivo functions.php ou em um plugin de snippets:
add_filter('http_request_timeout', function() { return 30; });
Também é possível ajustar o timeout em chamadas específicas:
$response = wp_remote_get($url, array('timeout' => 30));
Aumente o tempo com cautela. Um timeout muito alto mascara problemas reais de performance.
Checklist por função
Dono do site:
- Desative temporariamente plugins de segurança.
- Limpe cache do navegador e do site.
- Teste fora do horário de pico.
Desenvolvedor:
- Rode testes com wp_remote_get e aumente timeout se necessário.
- Verifique logs do servidor e respostas HTTP (códigos e cabeçalhos).
Provedor de hospedagem / DevOps:
- Verifique regras de firewall, proxy e limites de conexão.
- Atualize cURL/OpenSSL e valide resolução DNS do servidor.
Mini-metodologia (SOP rápido)
- Reproduzir o erro e coletar timestamp, endpoint e rota afetada.
- Desativar firewalls/plugins em ambiente controlado.
- Testar resolução DNS e timeout do servidor.
- Aumentar timeout para teste (não em produção sem monitoramento).
- Registrar logs e voltar a ativar proteções com exceções específicas.
Quando estas soluções falham (contraexemplos)
- O erro ocorre apenas para um endpoint externo que está de fato fora do ar. Nesse caso, não adianta mexer no seu servidor; o serviço externo está indisponível.
- O problema é causado por regras de rede do provedor de hospedagem (NAT, proxy reverso) e só o host pode resolver.
Fluxo de decisão (Mermaid)
flowchart TD
A[Erro cURL 28 detectado] --> B{Consegue reproduzir localmente?}
B -- Sim --> C[Desativar plugins de segurança]
B -- Não --> D[Testar de outra rede/dispositivo]
C --> E{Erro sumiu?}
E -- Sim --> F[Revisar regras do firewall e logs]
E -- Não --> G[Testar DNS e SSL]
G --> H{DNS/SSL OK?}
H -- Não --> I[Corrigir DNS/SSL e retestar]
H -- Sim --> J[Aumentar timeout / verificar servidor]
J --> K{Resolveu?}
K -- Sim --> L[Monitorar e documentar]
K -- Não --> M[Acionar suporte do provedor de hospedagem]
Casos de teste / Critérios de aceitação
- Teste 1: Após desativar o plugin de segurança, a requisição externa responde dentro do timeout. Resultado esperado: erro desaparece.
- Teste 2: Após alterar DNS para 8.8.8.8, o site resolve o nome e a requisição externa funciona.
- Teste 3: Após aumentar timeout para 30s, a mesma operação conclui com sucesso sem timeout.
Critério de aceitação final: a operação que antes lançava cURL error 28 retorna uma resposta HTTP válida ou um erro específico que permita nova ação corretiva.
Segurança e privacidade
- Evite desabilitar regras de firewall por tempo indefinido.
- Registre quais endpoints foram liberados e por qual motivo.
- Se lidar com dados pessoais, verifique impacto GDPR antes de alterar fluxos que encaminham dados a terceiros.
Notas de compatibilidade / migração
- Em hospedagens compartilhadas, algumas restrições de rede podem não ser alteráveis. Considere migrar para VPS ou hospedagem gerenciada se precisar de controle fino.
- Em ambientes com proxy reverso (Cloudflare, Varnish), verifique regras e timeouts adicionais.
Resumo e próximos passos
- Principais ações imediatas: desativar temporariamente firewall, desativar plugins para isolar, limpar cache e testar DNS público.
- Se o problema persistir: verifique SSL/TLS, atualize cURL/OpenSSL, aumente timeout de teste e envolva o suporte da hospedagem.
Se precisar, copie a checklist acima e cole em um chamado de suporte. Inclua logs, horário exato e as etapas que já realizou.
Se você gostou deste guia, compartilhe a solução com sua equipe. Se tiver dúvidas específicas (logs, endpoint afetado), cole aqui nos comentários que eu ajudo a analisar.
Resumo do artigo:
- O erro cURL 28 indica timeout em requisições externas.
- Faça verificações básicas primeiro (firewall, plugins, cache, DNS).
- Ajuste timeout com cautela e conte com o suporte do host quando necessário.
Materiais semelhantes

Monitoramento Apache Tomcat — contadores e regras

Como se Proteger do Clickjacking

Papéis de parede distintos por tela no Android

Como remover seus dados de corretores de dados

Papéis de parede por tela no Android
