Sistema de selección de versiones PHP con Core-Admin para scripts (para ssh/bash/cron)


#1

1. Introducción

En caso de que necesites una versión distinta de php para tus scripts de consola o crons tienes varias opciones:

  1. Usar la ruta directa a la instalación PHP de Core-Admin en:

    >> /usr/core-admin/php/<version>/bin/php

  2. Usar el script de selección de versión para que todo comando php que vaya a continuación funcione con la versión activada tras la ejecución del comando:

    >> core_admin_php <version>

La idea es poder seleccionar en tiempo real el motor php deseado sin tener que cambiar motores php por defecto, lo cual puede tener impacto en aplicaciones en producción.

2. Antes de continuar, instalando el motor

Para que puedas usar una versión PHP distinta a la proporcionada por la ruta por defecto /usr/bin/php tienes que instalar el paquete Core-Admin primero.

  1. Para ello, ejecuta lo siguiente para actualizar el listado de paquetes disponibles a la última:

    >> crad-update.pyc -u

  2. Instala/comprueba la versión que necesitas. Por ejemplo, para la 7.3, sería:

    >> core_admin_php 7.3
    >> php --version
    PHP 7.3.5 (cli) (built: May 20 2019 09:58:33) ( NTS )
    Copyright © 1997-2018 The PHP Group
    Zend Engine v3.3.5, Copyright © 1998-2018 Zend Technologies

3. Usando la ruta completa al motor PHP.

Este es el método más sencillo ya que permite seleccionar el motor php en el mismo comando. Por ejemplo, para ejecutar un script con el motor 7.3, ejecutar:

>> /usr/core-admin/php/7.3/bin/php /var/webs/tualojamientoweb.com/html/script.php

NOTA IMPORTANTE: revisa las notas de seguridad a continuación.

4. Activando un entorno que configura la versión PHP por defecto para dicha sesión

En el caso de que estés usando un entorno que necesite configurar la versión php sin rutas completas pero con una versión en concreto usa:

>> core_admin_php 7.3

Esto instalará la versión php 7.3 si es necesario y creará un entorno donde la versión seleccionada sea la que funcione por defecto al escribir php:

>> php --version
PHP 5.6.40-0+deb8u2 (cli) (built: Mar 30 2019 20:26:13)
Copyright © 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright © 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright © 1999-2016, by Zend Technologies

>> core_admin_php 7.3
>> php --version
PHP 7.3.5 (cli) (built: May 20 2019 09:47:16) ( NTS )
Copyright © 1997-2018 The PHP Group
Zend Engine v3.3.5, Copyright © 1998-2018 Zend Technologies

>> core_admin_php 7.2
>> php --version
PHP 7.2.18 (cli) (built: May 20 2019 11:09:27) ( NTS )
Copyright © 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright © 1998-2018 Zend Technologies
with Zend OPcache v7.2.18, Copyright © 1999-2018, by Zend Technologies

>> core_admin_php 7.1
>> php --version
PHP 7.1.29 (cli) (built: May 20 2019 11:40:34) ( NTS )
Copyright © 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright © 1998-2018 Zend Technologies
with Zend OPcache v7.1.29, Copyright © 1999-2018, by Zend Technologies

La ventaja de usar core_admin_php es que no realiza ningún cambio en enlaces simbólicos ni en rutas por defecto asociadas a /usr/bin/php o /usr/local/bin/php, lo cual podría causar problemas a aplicaciones que ya están en producción.

5. Notas sobre la seguridad de ejecutar scripts php como root

De manera general no se recomienda ejecutar código php como root y que esté disponible en un alojamiento. Esto supone una amenaza de seguridad grave:

  1. Un atacante podría modificar el script del alojamiento introduciendo código de ejecución no deseado

  2. Y a continuación esperar a que el cron de root haga el resto del trabajo.

Core-Admin detecta estos casos y modifica los permisos del script para que el propietario y el grupo sea root y sólo pueda ser visible y usable por el root.