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 

Actualizar a PHP 7

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 

Cambios en la configuración del servidor web para que todo funcione con PHP7

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!