Ferramentas > Saúde do site com a linha amarela “Um ou mais módulos recomendados estão ausentes” e, ao abrir, uma lista com intl, imagick ou zip. Em servidor Ubuntu ou Debian com PHP 8.3, isso é um apt install e um restart do FPM.
Instale só o que a tela pediu
sudo apt update
sudo apt install -y php8.3-intl php8.3-imagick php8.3-zip
sudo systemctl restart php8.3-fpm
Cada pacote joga um arquivo em /etc/php/8.3/mods-available/ e cria os links em fpm/conf.d e cli/conf.d. Por isso o restart é obrigatório: o processo do FPM lê a configuração uma vez, na subida, e continua servindo o site sem a extensão até você mandar reiniciar. O nginx não precisa de nada.
Confira no SAPI certo
Aqui está o erro que faz gente perder meia hora: rodar php -m e ver a extensão na lista. Isso é o PHP de linha de comando, não o que atende o site. O FPM tem o próprio conjunto de arquivos ini, então pergunte para ele:
sudo php-fpm8.3 -m | grep -E 'intl|imagick|zip'
ls -l /etc/php/8.3/fpm/conf.d/ | grep intl
Se aparecer nos dois comandos, o módulo está carregado para o WordPress. O imagick puxa a biblioteca do ImageMagick junto e resolve de quebra as miniaturas tortas de PNG com transparência; o intl é o que o WooCommerce e vários plugins de tradução usam para formatar número e data.
O aviso teimou em ficar
A checagem de extensões é um teste direto do Site Health: roda de novo a cada carregamento da tela, não fica em cache. Se a mesma extensão continua na lista depois do restart, você tem mais de uma versão de PHP na máquina e o pool do site aponta para outra. Confira para onde o vhost manda o PHP:
grep -rn fastcgi_pass /etc/nginx/sites-enabled/
O socket ali dentro diz qual versão instalar. O que realmente fica guardado é a contagem do painel: o widget de Saúde do site lê o transient health-check-site-status-result. Se só o número teimar em ficar velho, apague e recarregue com sudo -u www-data wp transient delete health-check-site-status-result.