
Cómo actualizar a PHP 7.3 de forma segura
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
- 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.
- 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.
- Independientemente de los puntos anteriores, recomendamos encarecidamente que tengas un sitio de staging o test 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.
- 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.
Problema: PHP 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 ☺️