Skip to content

Como atualizar a versão do PHP ao usar Laravel Forge e Sail

1. Atualizar composer.json

O primeiro passo é garantir que a versão no composer.json corresponda à versão do PHP que você pretende instalar. Neste exemplo, usaremos 8.2.14.

json
{
  "require": {
    "php": "8.2.14"  
  }
}

2. Executar sail up -d

Este comando inicia os contêineres do Sail caso não estejam em execução.

3. Executar sail composer update

É importante executar sail composer update para garantir que o arquivo composer.lock esteja atualizado e sincronizado com as alterações feitas no arquivo composer.json.

4. Atualizações no Laravel Forge

Certifique-se de estar executando a versão exata do PHP configurada no composer.json antes de enviar suas alterações. Você pode instalar patches de segurança para a versão atual do PHP clicando em "Patch". Observe que o Forge não permite definir uma versão específica, então você pode precisar atualizar para o patch mais recente da versão do PHP que está usando e defini-lo no composer.json para garantir que correspondam.

Laravel Forge

5. Enviar alterações

Dependendo da sua configuração do Forge, você pode precisar implantar manualmente, ou a implantação pode ocorrer automaticamente com base nos commits em um determinado branch.

Exemplo de erros de implantação se as versões do PHP não corresponderem

bash
Root composer.json requires php 8.2.13 (exact version match: 8.2.13 or 8.2.13.0) but your PHP version (8.2.14) does not satisfy that requirement.

Nesse caso, certifique-se de que seu composer.json reflita a versão correta e não se esqueça de executar sail composer update para aplicar essas alterações também ao composer.lock.

Se o comando sail composer update falhar devido a uma discrepância na versão do contêiner Docker, você pode executar sail up --build para reconstruir o contêiner Laravel usando a versão mais recente do PHP definida no seu docker-compose.yml.

yml
services:
    laravel.test:
        build:
            context: ./docker/8.2
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.2/app

Como estou usando o /docker/8.2/Dockerfile, ao reconstruir o contêiner, a versão 8.2.14 do PHP é instalada.