Cómo instalar y usar una versión diferente de PHP con Laravel Valet en Mac

Cuando trabajamos con Laravel en macOS usando Laravel Valet, una de las ventajas más importantes es que podemos cambiar la versión de PHP de forma relativamente sencilla.

Esto es muy útil cuando un proyecto requiere una versión específica de PHP o cuando algún paquete de Composer todavía no es compatible con la versión más reciente.

En este artículo veremos cómo instalar y usar una versión diferente de PHP con Laravel Valet, tomando como ejemplo un problema común al instalar paquetes como maatwebsite/excel.

El problema: incompatibilidad entre paquetes y versión de PHP

En nuestro caso, al intentar instalar maatwebsite/excel, Composer mostró un error relacionado con phpoffice/phpspreadsheet:

phpoffice/phpspreadsheet 1.30.4 requires php >=7.4.0 <8.5.0 -> your php version (8.5.5) does not satisfy that requirement.

El mensaje es bastante claro: la versión instalada de PHP era 8.5.5, pero phpoffice/phpspreadsheet en la versión requerida por el proyecto solo permite PHP menor a 8.5.0.

Esto no significa que Laravel Valet esté mal configurado. Simplemente quiere decir que el paquete aún no es compatible con la versión de PHP que estamos usando.

maatwebsite/excel utiliza phpoffice/phpspreadsheet como dependencia para trabajar con archivos Excel y CSV.

¿Por qué conviene cambiar de PHP en lugar de forzar Composer?

Cuando Composer marca un error de compatibilidad, una tentación común es usar banderas como:

composer require paquete --ignore-platform-reqs

Aunque esto puede “saltarse” temporalmente la validación, no es recomendable como solución principal.

El problema es que Composer dejaría instalar un paquete que oficialmente no soporta tu versión de PHP. Eso puede provocar errores más adelante en ejecución, especialmente cuando se trata de librerías que manipulan archivos, fechas, memoria, formatos o extensiones de PHP.

La solución más limpia es usar una versión de PHP compatible con el proyecto.

En este caso, la solución fue bajar de PHP 8.5 a PHP 8.4.

Verificar la versión actual de PHP

Antes de cambiar nada, conviene revisar qué versión está usando nuestra terminal:

php -v

También podemos revisar qué versión de PHP está usando Valet:

valet which-php

Esto ayuda a confirmar si Composer, Laravel y Valet están trabajando con la versión esperada.

Instalar PHP 8.4 con Homebrew

Si estamos usando Valet en macOS, lo normal es instalar PHP mediante Homebrew.

Para instalar PHP 8.4 ejecutamos:

brew install [email protected]

Si ya lo teníamos instalado, podemos asegurarnos de que esté actualizado con:

brew update
brew upgrade [email protected]

Cambiar Laravel Valet a PHP 8.4

Laravel Valet permite cambiar la versión global de PHP con el comando valet use.

Para cambiar Valet a PHP 8.4:

valet use [email protected]

Se reiniciará Valet de manera automática, si no lo hace lo reiniciamos nosotros:

valet restart

Y validamos:

php -v
valet which-php

La salida debería mostrar una versión PHP 8.4.x.

Si la terminal sigue usando otra versión

Puede pasar que Valet ya esté usando PHP 8.4, pero la terminal siga apuntando a PHP 8.5.

En ese caso, podemos forzar el link de Homebrew:

brew unlink php
brew link --force --overwrite [email protected]

Luego volvemos a validar:

php -v

Si todo está correcto, Composer ya debería detectar PHP 8.4.

Instalar nuevamente el paquete

Una vez cambiada la versión de PHP, regresamos al proyecto Laravel:

cd ~/Developments/LaravelProjects/nombre-del-proyecto

Y ejecutamos:

composer require maatwebsite/excel

Si el problema era la incompatibilidad con PHP 8.5, ahora Composer debería poder resolver las dependencias correctamente.

Usar una versión de PHP solo para un proyecto

Una opción muy útil de Valet es aislar una versión de PHP por proyecto.

Esto sirve cuando tenemos varios proyectos con diferentes necesidades. Por ejemplo:

  • Un proyecto moderno usando PHP 8.4.
  • Un proyecto legacy usando PHP 8.2.
  • Un proyecto experimental usando PHP 8.5.

Para aislar un proyecto con PHP 8.4:

cd ~/Developments/LaravelProjects/foresta
valet isolate [email protected]

Para ver los sitios aislados:

valet isolated

Para quitar el aislamiento y volver a usar la versión global de Valet:

valet unisolate

Esta opción es muy práctica porque evita estar cambiando la versión global de PHP cada vez que trabajamos en proyectos distintos.

Crear un archivo .valetrc

Otra alternativa es crear un archivo .valetrc dentro del proyecto indicando la versión de PHP que debe usar.

Dentro del proyecto:

touch .valetrc

Y agregamos:

[email protected]

Después podemos ejecutar:

valet use

Valet leerá el archivo y aplicará la versión indicada.

Comandos útiles de diagnóstico

Cuando Composer marque errores de compatibilidad, estos comandos ayudan bastante:

php -v
valet which-php
composer check-platform-reqs
composer why-not maatwebsite/excel

También podemos revisar qué paquetes están bloqueando una instalación específica:

composer why-not phpoffice/phpspreadsheet

Conclusión

Laravel Valet facilita bastante el manejo de versiones de PHP en macOS. Cuando un paquete no es compatible con la versión actual, lo ideal no es forzar Composer, sino revisar los requisitos y utilizar una versión de PHP compatible.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *