PHP 7 ya está aquí y, desde hace un tiempo, lo tenemos disponible en el repositorio Dotdeb para Debian. Vamos a ver como instalarlo y que problemas nos hemos encontrado para mantener todo funcionando correctamente. No me hago responsable de lo que pueda pasar si se decide usar repositorios Dotdeb en servidores en producción... Administrador: ¡teclea con cuidado! Y que la fuerza del backup te acompañe...
Primero que nada necesitaremos el repositorio Dotdeb instalado en nuestro sistema. Aquí teneis las instrucciones completas de instalación:
https://www.dotdeb.org/instructions/
De forma resumida: Como root añadimos estas líneas en el fichero /etc/apt/sorces.list
deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all
Después, logueados como root, ejecutamos los comandos:
wget https://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
Y ya solo nos queda actualizar nuestro sistema:
apt-get update && apt-get upgrade
Primero hay que borrar todos los paquetes de PHP5. Es imporante tener copia de seguridad de nuestros archivos de configuración, por lo que pueda pasar.
dpkg -l |grep php5
Vamos a borrar todos estos paquetes del sistema. En este caso, en la máquina donde estamos trabajando:
dpkg --remove libapache2-mod-php5 php-pear php5 php5-apcu php5-cli php5-common php5-fpm php5-json php5-mysql php5-readline
Y ahora vamos a por el PHP7. OJO: Pear aún no está disponible para PHP7 :(
apt-get install libapache2-mod-php7.0 php7.0 php7.0-apcu php7.0-cli php7.0-common php7.0-fpm php7.0-json php7.0-mysql php7.0-readline
Ahora ya podemos comprobar que ya tenemos nuestro flamante PHP correctamente instalado:
php -v
PHP 7.0.7-1~dotdeb+8.1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
No todos los paquetes de PHP 7 están disponibles en Dotdeb. Habrá que tener en cuenta esto a la hora de migrar... no queremos que nuestras aplicaciones dejen de funcionar por falta de librerías.
En mi caso, solo he tenido que hacer dos modificaciones:
En la configuración de los sitios en NGINX (/etc/nginx/sites-available/*) hay que editar la línea:
fastcgi_pass unix:/var/run/php5-fpm.sock;
Por la nueva localización:
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
Y, por último, en un proyecto que usaba el driver de base de datos mysqli, lo he tenido que cambiar por mysql.
Si te decides a actualizar: ¡Suerte!