Resolver problemas
Diagnosticar erros criptográficos do Sodium no WordPress
O WordPress e alguns plugins usam funções criptográficas para verificar assinaturas e proteger dados. O PHP pode fornecê-las através da extensão Sodium nativa e o WordPress inclui ainda uma biblioteca de compatibilidade para os ambientes que não a têm.
Um registo pode mostrar um erro como este:
PHP Fatal error: Uncaught TypeError: Argument 2 must be a string, integer given. in /home/usuario/public_html/wp-includes/sodium_compat/src/Core/Util.php:242
Este TypeError confirma que o segundo argumento recebido era um inteiro quando a função exigia uma cadeia de texto. O facto de o rastreio passar por wp-includes/sodium_compat/ não demonstra que falte o Sodium nem que ativar a extensão converta corretamente esse dado.
1. Conserve o rastreio completo
Anote a hora e procure no rastreio o primeiro ficheiro situado fora de wp-includes/sodium_compat/. Normalmente permite identificar o plugin, tema ou integração que preparou os argumentos. Não modifique os ficheiros de wp-includes: são substituídos ao atualizar e não corrigem quem faz a chamada.
2. Verifique o ambiente PHP do site
Reveja na informação do PHP se a extensão sodium está carregada. Faça a verificação a partir do mesmo PHP que executa o site: o PHP CLI pode usar outra versão ou configuração.
- Se o plugin exigir expressamente a extensão nativa e esta não estiver carregada, ative-a em Select PHP Version ou peça ao fornecedor que o faça.
- Se o Sodium já estiver ativo, ou se o erro indicar um tipo inválido, atualize o componente identificado e reveja com o seu programador porque é que envia um inteiro.
- Se a falha apareceu depois de mudar de PHP, confirme que o site mantém as mesmas extensões na nova versão.
3. Verifique a correção
Repita exatamente a operação que falhava e reveja o registo da mesma hora. Confirme que o TypeError já não aparece e que a assinatura, o webhook ou a integração envolvida conclui o seu processo. A presença da extensão, por si só, não verifica que os dados enviados sejam válidos.
Não converta o argumento em texto dentro do sodium_compat para evitar o TypeError: chaves, assinaturas e mensagens têm formatos e comprimentos concretos. Uma conversão que elimina o erro pode deixar uma verificação incorreta.
Ao comunicar o rastreio ao programador, mantenha os nomes de funções e tipos, mas omita chaves, assinaturas privadas, tokens e conteúdo sensível. Use dados de teste para reproduzir a operação criptográfica; um ecrã sem erro não basta se a validação tiver sido omitida.
Também lhe pode ser útil
- Como resolver o erro cURL 60 de certificado SSL no WordPress Como diagnosticar e resolver o erro cURL 60 do WordPress sem desativar a verificação de certificados...
- Depurar erros no WordPress Localize ecrãs em branco e falhas internas do WordPress enviando WP_DEBUG para um registo privado, s...
- Erro ao atualizar o WordPress, "cURL operation timed out" Identifique o URL e a fase de um pedido esgotado antes de atribuir o erro cURL 28 ao WordPress, a um...
- Erros 404 em elementos estáticos tornam a navegação lenta Deteta recursos estáticos inexistentes que acionam o PHP e consomem CPU, serve-os como 404 leves e o...
Algo não bate certo ou mudou? Diga-nos e revemos.