Ubuntu 18.04 Server: Como Atualizar o PHP com Segurança
Para alterar o PHP para a versão mais recente no Ubuntu 18.04 Server, primeiro verifique o suporte e a compatibilidade do sistema operacional e dos aplicativos, depois teste o novo PHP em um servidor Ubuntu suportado antes de fazer a mudança. Simplesmente adicionar repositórios externos e realizar uma atualização completa de pacotes, como no passado, não garante a versão desejada do PHP nem que o servidor web a utilize.
Pontos a verificar primeiro no Ubuntu 18.04
A manutenção de segurança geral para Ubuntu 18.04 LTS terminou em maio de 2023. A manutenção de segurança estendida (ESM) do Ubuntu Pro fornece patches de segurança adicionais para pacotes aplicáveis, mas isso não significa suporte para todos os repositórios externos ou todas as versões do PHP. Verifique o período de suporte do Ubuntu 18.04 e a cobertura da sua assinatura e pacotes atuais.
Você deve distinguir entre as versões suportadas pelo projeto PHP e os pacotes para os quais a distribuição fornece correções de segurança. Mesmo que os números das versões dos pacotes do Ubuntu permaneçam os mesmos, correções de segurança podem ser aplicadas, enquanto pacotes externos não recebem automaticamente garantias do Ubuntu Pro. Verifique tanto as versões de PHP oficialmente suportadas quanto a política do fornecedor do pacote.
A longo prazo, é recomendado instalar um Ubuntu LTS suportado em um novo servidor e migrar o serviço. Ao atualizar o servidor existente no local, você não pode pular versões LTS, então é necessário passar de 18.04 para 20.04 primeiro e proceder sequencialmente. Para passos detalhados, consulte o Guia de Atualização do Ubuntu Server.
Verifique a configuração atual do PHP e do servidor web
Antes de alterar o servidor de produção, registre a versão da interface de linha de comando (CLI), extensões carregadas e pacotes instalados. Os seguintes comandos recuperam informações, mas alguns comandos podem falhar se o PHP não estiver instalado.
lsb_release -a
php -v
php --ini
php -m
dpkg -l 'php*' | grep '^ii'
apt-cache policy php
php -v é a versão CLI. A versão e as configurações do módulo Apache ou PHP-FPM (Gerenciador de Processos FastCGI) usado para requisições web podem diferir. No Apache, verifique os módulos ativos com o apache2ctl -M e, nas configurações de site do Nginx ou Apache, verifique o socket ou endereço para o qual o FastCGI aponta. Se o PHP-FPM é usado deve ser verificado junto com a lista de serviços e as configurações do servidor web.
systemctl list-units --type=service --all 'php*-fpm.service'
sudo apache2ctl -M
Em servidores que não utilizam Apache, não há necessidade de executar o segundo comando. Faça backup dos arquivos de configuração, arquivos do site, bancos de dados e arquivos enviados, e revise os procedimentos de restauração. Mantenha as configurações contendo senhas ou informações pessoais em segurança.
Escolhendo uma nova versão e preparando um ambiente de teste
- Verifique quais versões do PHP são suportadas pela aplicação, plugins e dependências. Mudanças de versão principal no PHP podem causar comportamentos incompatíveis, portanto, revise o guia de migração do PHP da versão atual para a versão alvo.
- Selecione uma combinação de Ubuntu e PHP suportada e prepare um servidor de teste separado do ambiente de produção. Use backups restauráveis e preste atenção à proteção dos dados reais dos usuários.
- Registre as extensões PHP necessárias e encontre pacotes adequados para o novo ambiente. A necessidade de drivers de banco de dados, processamento de imagem, XML, ZIP, etc., varia dependendo da aplicação.
- No servidor de teste, verifique login, conexões com o banco de dados, upload de arquivos, tarefas agendadas e telas principais, e revise os logs de erros. Se houver problemas, modifique a aplicação e as extensões, e teste novamente.
Exemplo: Instalando PHP 8.3 em um servidor de teste Ubuntu 24.04
Abaixo está um exemplo de instalação do PHP 8.3 CLI e PHP-FPM em um novo servidor de teste Ubuntu 24.04 LTS, não Ubuntu 18.04. PHP 8.3 não significa necessariamente que é a versão mais recente. Verifique o período de suporte para a versão Ubuntu selecionada e a lista de pacotes PHP 8.3 para Ubuntu 24.04, e adicione apenas as extensões necessárias para o seu aplicativo.
Primeiro, revise os candidatos a pacote e o plano de alterações. Se não houver candidatos ou se a lista de remoção/alteração for diferente do esperado, não instale e verifique o repositório e as dependências.
sudo apt update
apt-cache policy php8.3-cli php8.3-fpm
apt-get -s install php8.3-cli php8.3-fpm
Se os resultados no servidor de teste forem adequados, instale e verifique o status. O comando abaixo não configura o servidor web para usar o PHP-FPM automaticamente.
sudo apt install php8.3-cli php8.3-fpm
php8.3 -v
php8.3 -m
systemctl status php8.3-fpm --no-pager
Por exemplo, se um aplicativo requer conexões MySQL ou MariaDB, revise o php8.3-mysql separadamente nesse ambiente. Como os arquivos de configuração e extensões podem diferir entre CLI e FPM, verifique as configurações e serviços do novo FPM. Após instalar o pacote, ajuste as configurações FastCGI do servidor web para corresponder ao socket FPM do servidor de teste e, depois de passar na verificação da configuração do servidor web, recarregue-o. O método do módulo Apache é configurado separadamente e não deve ser confundido com o FPM.
Verifique a configuração web e recupere o serviço em caso de problemas
Você não pode verificar a versão do PHP de um site usando apenas a versão CLI. Verifique as configurações ativas do servidor web juntamente com os serviços e logs do FPM e, em um ambiente de teste restrito, confirme através da página de status da aplicação ou das ferramentas de administração se as requisições web estão usando o novo PHP. Não deixe uma página phpinfo() que exponha configurações detalhadas do servidor em um local acessível publicamente.
Antes da transição real, planeje uma janela de manutenção, sincronização de dados e pontos de recuperação. Após a troca de serviços, verifique as funções principais e os logs de erros do servidor web e do PHP. Se houver problemas, retorne às configurações de conexão do servidor web salvas anteriormente, realize verificações de configuração e recarregue, ou redirecione o tráfego de volta para o servidor anterior à transição. Se a estrutura do banco de dados tiver sido alterada, simplesmente reverter a versão do PHP pode não restaurar a funcionalidade, portanto planos de backup e restauração de dados devem ser usados juntos.
Tenha cautela com repositórios externos e atualizações completas
O método anterior neste artigo adicionou ppa:ondrej/php e executou apt-get upgrade. Se os repositórios externos atualmente suportam o Ubuntu 18.04 e a versão desejada do PHP é determinado pelo provedor, e simplesmente adicionar um repositório não garante a manutenção de segurança. apt-get upgrade afeta não apenas o PHP, mas também outros pacotes que podem ser atualizados.
Antes de adicionar ou remover repositórios em um servidor de produção, revise as fontes dos pacotes, as dependências que podem mudar e os métodos de recuperação. Você também deve verificar como o servidor web lida com o PHP separadamente, já que ativar apenas uma versão diferente do módulo do Apache enquanto deixa o módulo antigo do PHP como está pode causar conflitos de configuração.




