🎃 12 meses por 75 €

El plan anual a mitad de precio hasta el 31 de octubre.

Aprovechar la oferta

🎃 Halloween: 12 meses por 75 €

Plan anual a mitad de precio, para altas y renovaciones. Solo hasta el 31 de octubre.
Aprovechar la oferta
Saltar al contenido
Curso Actualizar un proyecto de Laravel 10 a Laravel 11
03/13 Antes de cambiar nada composer outdated y composer why-not: qué bloquea la actualización a Laravel 11
Tu lectura Quedan 11 min
Lección 3 de 13 · Antes de cambiar nada

composer outdated y composer why-not: qué bloquea la actualización a Laravel 11

11 min de lectura Laravel 11

Hola, bienvenido. En esta lección vamos a preguntarle a Composer qué nos impide instalar Laravel 11, antes de cambiar nada en composer.json. composer outdated nos dice qué paquetes tienen versiones nuevas que podríamos instalar en este momento, y composer why-not nos dice qué impide instalar una versión concreta y qué paquete lo bloquea. Con los 2 vamos a preparar el plan de la actualización, y veremos por qué composer outdated no enseña Laravel 11.

composer outdated y la versión de PHP del contenedor

Antes de actualizar, lo habitual es preguntar qué paquetes tienen versiones nuevas. --direct limita la lista a los paquetes que están en nuestro composer.json, sin las dependencias de las dependencias, que no nos interesan ahora. Esta es la salida el 21 de octubre de 2026 (las versiones más nuevas cambiarán cuando lo lances tú):

Terminal
sail composer outdated --direct
Salida
Legend: ! patch or minor release available - update recommended ~ major release available - update possible doctrine/dbal 3.10.6 ~ 4.2.5 Powerful PHP database abstraction ... guzzlehttp/guzzle 7.16.0 ~ 8.3.0 Guzzle is a PHP HTTP client library laravel/tinker 2.11.1 ~ 3.0.2 Powerful REPL for the Laravel fram... livewire/livewire 3.8.10 ~ 4.4.7 A front-end framework for Laravel. nunomaduro/larastan 2.11.2 = 2.11.2 Larastan - Discover bugs in your c... Package nunomaduro/larastan is abandoned, you should avoid using it. Use larastan/larastan instead. spatie/laravel-permission 5.11.1 ~ 6.25.0 Permission handling for Laravel 6....

Fíjate en lo que falta. No dice nada de laravel/framework, que tiene 3 versiones major por delante, ni de Sanctum, ni de Breeze, ni de Pest, ni de Collision. Solo lista 5 paquetes con una versión major nueva (doctrine/dbal 4, Guzzle 8, Tinker 3, Livewire 4 y Spatie Permission 6) y a Larastan, que aparece por estar abandonado, no porque tenga una versión nueva. Viendo solo esta salida, Laravel 10 parecería la última versión.

¿Por qué? Porque Composer se ejecuta dentro del contenedor, y outdated solo enseña las versiones que se pueden instalar con su versión de PHP, que es la 8.1. Laravel 11, Sanctum 4, Breeze 2, Collision 8 y Pest 3 exigen PHP 8.2 o superior, así que para Composer no existen mientras el contenedor siga en 8.1. Los 5 paquetes que sí lista tienen versiones major nuevas que siguen admitiendo PHP 8.1, y por eso aparecen. En la siguiente lección, cuando el contenedor esté en PHP 8.2, repetiremos este mismo comando y la lista será otra.

Lo que queda de esta lección
  1. 02composer why-not: qué bloquea Laravel 11
  2. 03La guía oficial: Updating Dependencies
  3. 04El plan
Sigue leyendo con tu suscripción El curso completo, con el certificado y el foro, está incluido en la suscripción. Ver los planes