Skip to content

Cómo actualizar la versión de PHP al usar Laravel Forge y Sail

1. Actualizar composer.json

El primer paso es asegurarse de que la versión en composer.json coincida con la versión de PHP que planea instalar. En este ejemplo, usaremos 8.2.14.

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

2. Ejecutar sail up -d

Este comando inicia los contenedores de Sail en caso de que no se estén ejecutando.

3. Ejecutar sail composer update

Es importante ejecutar sail composer update para garantizar que el archivo composer.lock esté actualizado y sincronizado con los cambios realizados en el archivo composer.json.

4. Actualizaciones en Laravel Forge

Asegúrese de estar ejecutando la versión exacta de PHP configurada en composer.json antes de enviar sus cambios. Puede instalar parches de seguridad para la versión actual de PHP haciendo clic en "Patch". Tenga en cuenta que Forge no le permite establecer una versión específica, por lo que es posible que deba actualizar al último parche de la versión de PHP que está utilizando y establecerlo en composer.json para garantizar que coincidan.

Laravel Forge

5. Enviar cambios

Dependiendo de su configuración de Forge, es posible que deba implementar manualmente, o la implementación puede ocurrir automáticamente en función de los commits en una rama determinada.

Ejemplo de errores de implementación si las versiones de PHP no coinciden

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.

En tal caso, asegúrese de que su composer.json refleje la versión correcta y no olvide ejecutar sail composer update para aplicar esos cambios también a composer.lock.

Si el comando sail composer update falla debido a una discrepancia en la versión del contenedor de Docker, puede ejecutar sail up --build para reconstruir el contenedor de Laravel utilizando la última versión de PHP establecida en su docker-compose.yml.

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

Como estoy usando el /docker/8.2/Dockerfile, al reconstruir el contenedor se instala la versión 8.2.14 de PHP.