{"id":248,"date":"2026-05-03T23:35:18","date_gmt":"2026-05-04T06:35:18","guid":{"rendered":"https:\/\/www.mariatech.com.mx\/blog\/?p=248"},"modified":"2026-05-03T23:37:12","modified_gmt":"2026-05-04T06:37:12","slug":"como-instalar-y-usar-una-version-diferente-de-php-con-laravel-valet-en-mac","status":"publish","type":"post","link":"https:\/\/www.mariatech.com.mx\/blog\/laravel-php\/como-instalar-y-usar-una-version-diferente-de-php-con-laravel-valet-en-mac\/","title":{"rendered":"C\u00f3mo instalar y usar una versi\u00f3n diferente de PHP con Laravel Valet en Mac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cuando trabajamos con Laravel en macOS usando <strong>Laravel Valet<\/strong>, una de las ventajas m\u00e1s importantes es que podemos cambiar la versi\u00f3n de PHP de forma relativamente sencilla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto es muy \u00fatil cuando un proyecto requiere una versi\u00f3n espec\u00edfica de PHP o cuando alg\u00fan paquete de Composer todav\u00eda no es compatible con la versi\u00f3n m\u00e1s reciente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo veremos c\u00f3mo instalar y usar una versi\u00f3n diferente de PHP con Laravel Valet, tomando como ejemplo un problema com\u00fan al instalar paquetes como <code>maatwebsite\/excel<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El problema: incompatibilidad entre paquetes y versi\u00f3n de PHP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En nuestro caso, al intentar instalar <code>maatwebsite\/excel<\/code>, Composer mostr\u00f3 un error relacionado con <code>phpoffice\/phpspreadsheet<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>phpoffice\/phpspreadsheet 1.30.4 requires php &gt;=7.4.0 &lt;8.5.0 -&gt; your php version (8.5.5) does not satisfy that requirement.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El mensaje es bastante claro: la versi\u00f3n instalada de PHP era <strong>8.5.5<\/strong>, pero <code>phpoffice\/phpspreadsheet<\/code> en la versi\u00f3n requerida por el proyecto solo permite PHP menor a <strong>8.5.0<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto no significa que Laravel Valet est\u00e9 mal configurado. Simplemente quiere decir que el paquete a\u00fan no es compatible con la versi\u00f3n de PHP que estamos usando.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>maatwebsite\/excel<\/code> utiliza <code>phpoffice\/phpspreadsheet<\/code> como dependencia para trabajar con archivos Excel y CSV.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfPor qu\u00e9 conviene cambiar de PHP en lugar de forzar Composer?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando Composer marca un error de compatibilidad, una tentaci\u00f3n com\u00fan es usar banderas como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>composer require paquete --ignore-platform-reqs<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque esto puede \u201csaltarse\u201d temporalmente la validaci\u00f3n, no es recomendable como soluci\u00f3n principal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El problema es que Composer dejar\u00eda instalar un paquete que oficialmente no soporta tu versi\u00f3n de PHP. Eso puede provocar errores m\u00e1s adelante en ejecuci\u00f3n, especialmente cuando se trata de librer\u00edas que manipulan archivos, fechas, memoria, formatos o extensiones de PHP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3n m\u00e1s limpia es usar una versi\u00f3n de PHP compatible con el proyecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso, la soluci\u00f3n fue bajar de PHP 8.5 a <strong>PHP 8.4<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verificar la versi\u00f3n actual de PHP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de cambiar nada, conviene revisar qu\u00e9 versi\u00f3n est\u00e1 usando nuestra terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php -v<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos revisar qu\u00e9 versi\u00f3n de PHP est\u00e1 usando Valet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valet which-php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto ayuda a confirmar si Composer, Laravel y Valet est\u00e1n trabajando con la versi\u00f3n esperada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar PHP 8.4 con Homebrew<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si estamos usando Valet en macOS, lo normal es instalar PHP mediante Homebrew.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para instalar PHP 8.4 ejecutamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew install php@8.4<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si ya lo ten\u00edamos instalado, podemos asegurarnos de que est\u00e9 actualizado con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew update\nbrew upgrade php@8.4<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Cambiar Laravel Valet a PHP 8.4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Laravel Valet permite cambiar la versi\u00f3n global de PHP con el comando <code>valet use<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para cambiar Valet a PHP 8.4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valet use php@8.4<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se reiniciar\u00e1 Valet de manera autom\u00e1tica, si no lo hace lo reiniciamos nosotros:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valet restart<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y validamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php -v\nvalet which-php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La salida deber\u00eda mostrar una versi\u00f3n PHP 8.4.x.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Si la terminal sigue usando otra versi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Puede pasar que Valet ya est\u00e9 usando PHP 8.4, pero la terminal siga apuntando a PHP 8.5.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En ese caso, podemos forzar el link de Homebrew:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew unlink php\nbrew link --force --overwrite php@8.4<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Luego volvemos a validar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php -v<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si todo est\u00e1 correcto, Composer ya deber\u00eda detectar PHP 8.4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar nuevamente el paquete<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez cambiada la versi\u00f3n de PHP, regresamos al proyecto Laravel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/Developments\/LaravelProjects\/nombre-del-proyecto<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y ejecutamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>composer require maatwebsite\/excel<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si el problema era la incompatibilidad con PHP 8.5, ahora Composer deber\u00eda poder resolver las dependencias correctamente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Usar una versi\u00f3n de PHP solo para un proyecto<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una opci\u00f3n muy \u00fatil de Valet es aislar una versi\u00f3n de PHP por proyecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto sirve cuando tenemos varios proyectos con diferentes necesidades. Por ejemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un proyecto moderno usando PHP 8.4.<\/li>\n\n\n\n<li>Un proyecto legacy usando PHP 8.2.<\/li>\n\n\n\n<li>Un proyecto experimental usando PHP 8.5.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Para aislar un proyecto con PHP 8.4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/Developments\/LaravelProjects\/foresta\nvalet isolate php@8.4<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para ver los sitios aislados:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valet isolated<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para quitar el aislamiento y volver a usar la versi\u00f3n global de Valet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valet unisolate<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esta opci\u00f3n es muy pr\u00e1ctica porque evita estar cambiando la versi\u00f3n global de PHP cada vez que trabajamos en proyectos distintos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Crear un archivo .valetrc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Otra alternativa es crear un archivo <code>.valetrc<\/code> dentro del proyecto indicando la versi\u00f3n de PHP que debe usar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro del proyecto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>touch .valetrc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y agregamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php=php@8.4<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s podemos ejecutar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valet use<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Valet leer\u00e1 el archivo y aplicar\u00e1 la versi\u00f3n indicada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comandos \u00fatiles de diagn\u00f3stico<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando Composer marque errores de compatibilidad, estos comandos ayudan bastante:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php -v<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>valet which-php<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>composer check-platform-reqs<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>composer why-not maatwebsite\/excel<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos revisar qu\u00e9 paquetes est\u00e1n bloqueando una instalaci\u00f3n espec\u00edfica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>composer why-not phpoffice\/phpspreadsheet<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Laravel Valet facilita bastante el manejo de versiones de PHP en macOS. Cuando un paquete no es compatible con la versi\u00f3n actual, lo ideal no es forzar Composer, sino revisar los requisitos y utilizar una versi\u00f3n de PHP compatible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando trabajamos con Laravel en macOS usando Laravel Valet, una de las ventajas m\u00e1s importantes es&#8230;<\/p>\n","protected":false},"author":1,"featured_media":249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel-php"],"_links":{"self":[{"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/posts\/248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=248"}],"version-history":[{"count":0,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/posts\/248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/media\/249"}],"wp:attachment":[{"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}