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.