Wordpress

Módulos PHP 8.3 faltando na Saúde do site do WordPress: como instalar

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.

Post Recentes

Caso de teste PHPUnit a partir do bug: do relato solto para o teste que falha

Chegou um chamado sem passo a passo e sem exemplo. Veja como virar esse relato em um caso de teste…

1 dia atrás

Bloquear .env e .git no nginx: as regras que ainda deixam o arquivo vazar

Negar /.env no nginx parece resolvido até alguém pedir /wp-content/uploads/.env ou backup.sql. As regras que testei e os furos que…

3 dias atrás

Canonical errado no Yoast: corrigindo pelo filtro wpseo_canonical

O Search Console marca suas páginas 2, 3 e 4 como alternativas da página 1? Ajuste a tag canônica do…

3 dias atrás

Layout XML do Magento 2: remover bloco de módulo de terceiro

Um módulo de terceiro plantou um banner no topo da loja e você não quer desinstalar nada: tire o bloco…

3 dias atrás

Restaurar dump do Magento 2 em outro servidor: trocar a base_url no SQL

Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…

4 dias atrás

Criar exceção customizada em PHP: quando estender Exception compensa

Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…

5 dias atrás