Volver
Cómo actualizar a PHP 7.3 de forma segura

Cómo actualizar a PHP 7.3 de forma segura

- - Artículos

El equipo de desarrollo de PHP anunció la versión 7.3.0 hace cinco días. Hoy estamos contentos de poder decirte que ¡Moss soporta plenamente la nueva rama 7.3 de tu lenguaje favorito!

Usando Moss, actualizar tu sitio web a PHP 7.3 es algo realmente sencillo: simplemente elige la nueva versión en los ajustes de tu(s) sitio(s). Sin embargo, hay algunas cosas a tener en cuenta antes de dar el salto a 7.3. Como en cada versión, algunas características entran y otras se van. Veamos cómo actualizar tu aplicación de forma segura evitando sorpresas desagradables.

Pasos

  1. Si eres el autor de la aplicación del sitio web, comprueba la guía de migración oficial para ver si hay cambios incompatibles hacia atrás que afecten a tu base de código. En tal caso, desarrolla un fix antes de continuar.
  2. Si no eres el autor de la aplicación, trata de comprobar si el software que utilizas dice soportar PHP 7.3. P.ej. WordPress 5.0 soporta PHP 7.3 de manera oficial.
  3. Independientemente de los puntos anteriores, recomendamos encarecidamente que tengas un sitio de stagingtest de tu(s) sitio(s) web. Actualiza a PHP 7.3 en ese entorno y realiza tantas pruebas como te sea posible para ganar confianza en que tu web se ejecuta sin problemas en la nueva versión de PHP.
  4. Una vez has acabado con lo anterior, actualiza tu sitio web en producción a PHP 7.3 🚀 Recuerda que con Moss puedes tener múltiples webs en un mismo servidor usando diferentes versiones de PHP, por lo que no tienes por qué actualizar todas tus aplicaciones de una vez 😎

¿Qué podría ir mal?

Aunque tu aplicación esté lista para PHP 7.3 en este momento, aún podrías encontrar algunos problemas si utilizas versiones antiguas de aplicaciones PHP que no cumplen aún con 7.3. Veamos tres ejemplos.

ProblemaPHP 7.3. rompe compatibilidad de composer < 1.6.0

El despliegue de tu sitio web podría fallar si ejecuta composer para instalar las dependencias de tu aplicación:

Installation failed, reverting ./composer.json to its original content.

  [ErrorException]
  "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?  

Exception trace:
 () at /usr/share/php/Composer/DependencyResolver/RuleSetGenerator.php:286
 Composer\Util\ErrorHandler::handle() at /usr/share/php/Composer/autoload.php:258
 require() at /usr/share/php/Composer/autoload.php:258
 {closure}() at n/a:n/a
 spl_autoload_call() at /usr/share/php/Composer/DependencyResolver/Solver.php:75
 Composer\DependencyResolver\Solver->__construct() at /usr/share/php/Composer/Installer.php:459
 Composer\Installer->doInstall() at /usr/share/php/Composer/Installer.php:216
 Composer\Installer->run() at /usr/share/php/Composer/Command/RequireCommand.php:175
 Composer\Command\RequireCommand->execute() at /usr/share/php/Symfony/Component/Console/Command/Command.php:259
 Symfony\Component\Console\Command\Command->run() at /usr/share/php/Symfony/Component/Console/Application.php:844
 Symfony\Component\Console\Application->doRunCommand() at /usr/share/php/Symfony/Component/Console/Application.php:192
 Symfony\Component\Console\Application->doRun() at /usr/share/php/Composer/Console/Application.php:231
 Composer\Console\Application->doRun() at /usr/share/php/Symfony/Component/Console/Application.php:123
 Symfony\Component\Console\Application->run() at /usr/share/php/Composer/Console/Application.php:104
 Composer\Console\Application->run() at /usr/bin/composer:44

En versiones anteriores de PHP, la palabra clave continue se comporta como un break cuando está dentro de un bloque switch. Este comportamiento se ha “deprecado” porque no se alinea con la forma de funcionar de otros lenguajes de programación. Composer solucionó este problema hace tiempo (Septiembre de 2017), pero aún te podría afectar si estás usando una versión anterior. [Si eres usuario de Moss, recuerda que puedes actualizar composer fácilmente de manera periódica configurando un cron job]

Fix: Actualiza composer ejecutando
sudo composer self-update

Problema: composer self-update no funciona en composer < 1.7

Esto no está relacionado con PHP 7.3, pero podría afectarte si estás tratando de solucionar el problema anterior.

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

Exception trace:
 () at phar:///usr/local/bin/composer/src/Composer/Command/SelfUpdateCommand.php:218
 Composer\Command\SelfUpdateCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:242
 Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:843
 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:193
 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:251
 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:117
 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:100
 Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:59
 require() at /usr/local/bin/composer:24

Los nombres de funciones hash en OpenSSL 1.1.1 (y superior) están en minúscula. En versiones anteriores se aceptaban tanto en minúsculas como en mayúsculas. Las versiones de composer anteriores a la 1.7 (Septiembre de 2018) esperan un algoritmo hash llamado ‘SHA384’, pero pueden obtener ‘sha384’ en su lugar – y de aquí surge un bug en el comandoself-update.

Fix: Actualiza composer manualmente ejecutando
sudo wget https://getcomposer.org/download/1.8.0/composer.phar -O /usr/local/bin/composer && sudo chmod 755 /usr/local/bin/composer

Nota: puedes cambiar 1.8.0 por la versión de tu elección.

Problema: incompatibilidad con phpMyAdmin < 4.8.3

Se trata del mismo problema del break/continue del que hemos hablado antes, pero esta vez afecta a phpMyAdmin. Algunos de nuestros clientes instalan phpMyAdmin vía Moss para que les ayude a administrar las bases de datos de sus aplicaciones. Antes de actualizar phpMyAdmin a PHP 7.3, simplemente comprueba que tienes la v4.8.3 (Agosto de 2018) o superior.

Fix: Actualiza phpMyAdmin.

Conclusión

Si quieres evitar sorpresas al actualizar a PHP 7.3, revisa este artículo corto y ¡estarás listo para la actualización! El proceso debería ser mayormente indoloro, sobre todo si cuentas con las herramientas apropiadas ☺️

¡No te pierdas ningún post! Subscríbete al Blog de Moss