Actualizar a PHP 7.3.x con Homebrew en Mac

↑ Me gusta (0)

Es muy común que Laravel nos obligue a trabajar con lo último, siempre nos ha dicho que versión de PHP necesitamos para poder trabajar con sus últimas versiones. Necesito en este momento estar actualizado y justo en este instante está disponible la versión de PHP 7.3.10.

Laravel 6 dice en su documentación que requiere PHP >= 7.2.0, mi versión actual sirve pero no importa, instalemos lo último y mantengamos nuestro equipo de Youtube actualizado.

Ok, ¡vamos a instalarla!...

¿Qué tengo en este momento?

  1. Valet 2.0.12.
  2. MacOS Mojave 10.14.6 (Aunque esto no importa).
  3. PHP 7.2.6.

Eso es lo que uso como servidor, como sistema operativo y mi versión actual de PHP.

Actualicemos a Valet

En un antiguo post llamado Valet o Homestead te comenté sobre este sistema de servidor, de momento te lo puedo resumir de la siguiente forma: Valet es un entorno de desarrollo para Laravel, es ligero, minimalista y este funciona en Mac. En otras palabras un pequeño XAMPP para Laravel en Mac.

Me aseguré revisando mi versión de Valet con el comando valet -v, ahí vi que tenía el Valet 2.0.12. Vamos con el proceso de actualización.

Detuve el servicio:

$ valet stop
Stopping php...
Stopping [email protected]
Stopping php70...
Stopping nginx...
Valet services have been stopped.

Desinstalé a Valet:

$ valet uninstall
Stopping nginx...
Valet has been uninstalled.

Luego lo descargué:

$ composer global require laravel/valet
Changed current directory to /Users/italomoralesf/.composer
Using version ^2.5 for laravel/valet
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Updating laravel/valet (v2.0.12 => v2.5.1): Downloading (100%)
Writing lock file
Generating autoload files

Con este comando lo instalé:

$ valet install
Password:
Stopping nginx...
Installing nginx configuration...
Installing nginx directory...
Updating PHP configuration...
Restarting php...
Restarting dnsmasq...
Valet is configured to serve for TLD [.test]
Restarting nginx...

Valet installed successfully!

Por último lo he reiniciado:

$ valet restart
Restarting php...
Restarting nginx...

¿Esto es necesario para actualizar mi versión de PHP?: En realidad no, pero como estoy actualizando aprovecho de tener lo último y así poder trabajar actualizado en futuros tutoriales y videos.

¿Esto actualizó mi versión de PHP?, no, solo he actualizado a Valet... Avancemos:

Mi Valet está atualizado

$ valet -V
Laravel Valet 2.5.1

Pasé de 2.0.12 a 2.5.1, ¡GENIAL!...

Actualización a PHP 7.3.x

Lo hago con Homebrew, es mi gestor de paquetes porque trabajo en MacOS.

$ brew upgrade php
==> Upgrading 1 outdated package:
php 7.2.6 -> 7.3.10
==> Upgrading php 
Error: The following formula
  [#<Dependency: "python" []>, #<Options: []>]
cannot be installed as binary package and must be built from source.
Install the Command Line Tools:
  xcode-select --install

En este caso me arroja un error, dice exactamente xcode-select --install. Es sencillo, se soluciona ejecutando eso mismo que dice el error en el terminal.

$ xcode-select --install
xcode-select: note: install requested for command line developer tools
RimorsoftOnline:~ italomoralesf$ brew upgrade php
==> Upgrading 1 outdated package:
php 7.2.6 -> 7.3.10
==> Upgrading php 

...

sudo rm -rf /usr/local/Cellar/php/7.2.6

Este comando instaló y actualizó muchas dependencias y en cada paso actualizaba el PATH según correspondía.

Finalmente vemos luego de un largo proceso de instalación, el sistema me dice que elimine la versión anterior de PHP: Me muestra al final la siguiente línea sudo rm -rf /usr/local/Cellar/php/7.2.6 así que la ejecuto. Reviso mi versión de PHP y voilà:

$ php -v
PHP 7.3.10 (cli) (built: Sep 30 2019 19:59:06) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.10, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.10, Copyright (c) 1999-2018, by Zend Technologies

Vinculamos a Valet con el nuevo PHP: El siguiente comando actualizará a todo Valet con nuestro nuevo PHP.

$ valet use php
Stopping php...
Unlinking current version: php
Linking new version: php
Updating PHP configuration...
Restarting php...
Restarting nginx...
Valet is now using php.

¿Y Composer?...

Mi Composer está apuntando al PHP anterior, podría cambiar esa ruta pero me interesa también actualizarlo, ya sabes quisiera actualizar todo al respecto. Si ejecuto el comando de actualización me dará error.

$ composer self-update
Updating to version 1.9.0 (stable channel).
   Downloading (100%)

  [RuntimeException]
  SHA384 is not supported by your openssl extension, could not verify the pha  r file integrity

self-update [-r|--rollback] [--clean-backups] [--no-progress] [--update-keys] [--stable] [--preview] [--snapshot] [--set-channel-only] [--] [<version>]

Para no entrar en mucho detalle solo pensé en desinstalarlo e instalarlo de nuevo.

¿Dónde está Composer?:

$ which composer
/usr/local/bin/composer

Vamos a eliminarlo:

$ rm -rf /usr/local/bin/composer`

Lo instalo usando Homebrew:

$ brew install composer
==> Downloading https://getcomposer.org/download/1.9.0/composer.phar
######################################################################## 100.0%
    /usr/local/Cellar/composer/1.9.0: 3 files, 1.8MB, built in 6 seconds

Al instalarlo conseguí dos cosas, la última versión de Composer y al mismo tiempo que su ruta de PHP apunte a mi nuevo PHP.

La base de datos

Yo uso mariadb y cuando fui a trabajar con mis web me daba error, es lo mismo de siempre, mi sistema de base de datos apuntaba a mi versión de PHP anterior. En otras palabras todo giraba entorno a mi antigua versión de PHP.

Actualizar a mariadb:

$ brew upgrade mariadb
==> Upgrading 1 outdated package:
mariadb 10.3.7 -> 10.4.6_1
==> Upgrading mariadb 
==> Downloading https://homebrew.bintray.com/bottles/mariadb-10.4.6_1.mojave.bot
==> Downloading from https://akamai.bintray.com/c4/c4788018647187516423a4cf4a6f7
######################################################################## 100.0%
==> Pouring mariadb-10.4.6_1.mojave.bottle.tar.gz
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

MySQL is configured to only allow connections from localhost by default

To connect:
    mysql -uroot

To have launchd start mariadb now and restart at login:
  brew services start mariadb
Or, if you don't want/need a background service you can just run:
  mysql.server start
==> Summary
    /usr/local/Cellar/mariadb/10.4.6_1: 745 files, 173.3MB
Removing: /usr/local/Cellar/mariadb/10.3.7... (652 files, 174.2MB)

Lo importante de esto es que conseguimos tener una versión actual de nuestra base de datos y ademas se puso a tono con todos los cambios realizados.

Si trabajara con MySql quizás debía usar el comando brew upgrade mysql.

Notas Finales

  1. Toma en cuenta que a mi me presentó el error xcode-select --install, no tiene porqué pasarte lo mismo.
  2. También ten en consideración que yo quise actualizar a Valet y a Composer, tu puedes mantener tranquilamente tus versiones actuales.
  3. Toma en cuenta que todo gira entorno a PHP, cuando haces este cambio es normal que todo falle, puedes hacer que cada sistema apunte a tu nuevo PHP o hacer lo que hice yo (solo actualicé cada sistema para que esto se haga de forma automática).

Italo Morales F. Italo Morales F. 6,765.00 XP