PHP Installation · 8 min read · Oct 28, 2025

Cómo instalar PHP 7.1.16 como PHP-FPM y FastCGI para ISPConfig 3.1 en Debian 8 (Jessie)

La versión final de PHP 7.1 está disponible para descargar en Github y en los espejos de PHP ahora. PHP 7.1 es la próxima generación del lenguaje de programación PHP, es hasta 2 veces más rápido que PHP 5.6 y 14 veces más rápido que PHP 5.0 según las notas de la versión. La nueva versión de PHP no es 100% compatible con PHP 5.x ya que se han eliminado algunas API obsoletas, por lo que es una buena idea comenzar a probar sus sitios web para compatibilidad con esta nueva versión. Esto se puede hacer fácilmente y sin afectar todos los sitios en su servidor utilizando la función de múltiples versiones de PHP en ISPConfig 3. La versión de PHP se puede seleccionar en la configuración del sitio web de ISPConfig 3 para cada sitio individualmente. Esta función funciona con PHP-FPM y FastCGI. Este tutorial muestra cómo construir el nuevo PHP 7.1 como una versión de PHP-FPM y FastCGI en un servidor Debian Jessie. Esta construcción de PHP 7.1 incluye muchas extensiones compiladas y Zend OPcache y Memcached como módulos cargables.

1 Nota Preliminar

Voy a instalar PHP 7.1 que ha sido lanzado como versión final hace unos días. Tenga en cuenta que PHP-FPM se puede usar tanto en servidores Apache como Nginx, mientras que FastCGI está disponible solo para servidores Apache.

Con versiones anteriores de PHP, PHP-FPM y FastCGI habían sido mutuamente excluyentes, por lo que un binario FPM y FastCGI tenía que ser construido por separado. Con PHP 7.1, se puede construir un solo binario que soporte el modo FPM y FCGI.

2 Compilar PHP 7.1 con PHP-FPM y Fastcgi

Descargue y extraiga PHP 7.1 de Github:

mkdir -p /opt/php-7.1  
mkdir /usr/local/src/php7-build  
cd /usr/local/src/php7-build  
wget http://de2.php.net/get/php-7.1.16.tar.bz2/from/this/mirror -O php-7.1.16.tar.bz2  
tar jxf php-7.1.16.tar.bz2
cd php-7.1.16/

Instale los requisitos previos para construir PHP 7.1 y el editor nano que usaré para editar los archivos de configuración:

apt-get install build-essential nano autoconf
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

(El último comando es necesario si construye PHP con –with-imap, porque de lo contrario ./configure se detendrá con el siguiente error:

checking for crypt in -lcrypt... yes  
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.  
root@server1:/usr/local/src/php5-build/php-7.0.7#

)

Configure y construya PHP 7.1 de la siguiente manera (puede ajustar el comando ./configure a sus necesidades, eche un vistazo a

./configure --help

para ver todas las opciones disponibles; si usa un comando ./configure diferente, es posible que se requieran bibliotecas adicionales, o el proceso de construcción fallará):

./configure --prefix=/opt/php-7.1 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm

El último interruptor ( –enable-fpm) asegura que esta versión de PHP funcionará con PHP-FPM.

make  
make install

Copie php.ini y php-fpm.conf a las ubicaciones correctas:

cp /usr/local/src/php7-build/php-7.1.16/php.ini-production /opt/php-7.1/lib/php.ini
cp /opt/php-7.1/etc/php-fpm.conf.default /opt/php-7.1/etc/php-fpm.conf  
cp /opt/php-7.1/etc/php-fpm.d/www.conf.default /opt/php-7.1/etc/php-fpm.d/www.conf

Abra /opt/php-7.1/etc/php-fpm.conf y ajuste la siguiente configuración (elimine el ; frente a la línea pid):

nano /opt/php-7.1/etc/php-fpm.conf
[...]  
pid = run/php-fpm.pid  
[...]  

Luego abra /opt/php-7.1/etc/php-fpm.d/www.conf y ajuste la línea listen, debe usar un puerto no utilizado (por ejemplo, 8999; el puerto 9000 podría estar en uso por el PHP-FPM predeterminado de Debian ya):

nano /opt/php-7.1/etc/php-fpm.d/www.conf
[...]  
listen = 127.0.0.1:8999  
[...]  

Cuando use múltiples versiones adicionales de PHP, asegúrese de usar un puerto libre, por ejemplo, 8998, 8997 y así sucesivamente para las siguientes versiones.

3 Crear el script de inicio y el archivo de unidad systemd

Debian soporta Systemd así como los scripts de inicio tradicionales. La mayoría de los sistemas hoy en día utilizan Systemd, en este caso proceda con el capítulo 3.2, para sistemas con sistema de inicio tradicional, siga el capítulo 3.1 y luego proceda con el capítulo 4. No instale ambos, el script systemd y init.d, en el mismo sistema.

3.1 Crear un script de inicio init.d

Primero crearé un script de inicio para el servicio php-fpm y luego crearé una unidad systemd.

Primero, cree un script de inicio para PHP-FPM:

nano /etc/init.d/php-7.1-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-7.1-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-7.1-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.1/sbin/php-fpm
php_fpm_CONF=/opt/php-7.1/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.1/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Haga que el script de inicio sea ejecutable y cree los enlaces de inicio del sistema:

chmod 755 /etc/init.d/php-7.1-fpm  
insserv php-7.1-fpm

Finalmente inicie PHP-FPM:

/etc/init.d/php-7.1-fpm start

El resultado debería ser:

/etc/init.d/php-7.1-fpm start  
Starting php-fpm done

3.2 Crear un script Systemd para PHP 7.1

Ahora cree el archivo de unidad systemd:

nano /lib/systemd/system/php-7.1-fpm.service

con el siguiente contenido:

[Unit]  
Description=El Gestor de Procesos FastCGI de PHP 7.1  
After=network.target  
  
[Service]  
Type=simple  
PIDFile=/opt/php-7.1/var/run/php-fpm.pid  
ExecStart=/opt/php-7.1/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.1/etc/php-fpm.conf  
ExecReload=/bin/kill -USR2 $MAINPID  
  
[Install]  
WantedBy=multi-user.target

Habilite el servicio y recargue systemd:

systemctl enable php-7.1-fpm.service  
systemctl daemon-reload

Finalmente inicie PHP-FPM:

systemctl start php-7.1-fpm.service

4 Habilitar Zend OPcache

Para habilitar Zend OPcache, abra /opt/php-7.1/lib/php.ini…

nano /opt/php-7.1/lib/php.ini

… y agregue la siguiente línea al final:

[...]  
zend_extension=opcache.so

La extensión Memcache y APCu no se pueden instalar en PHP 7.1 aún, así que omitiré su instalación por ahora. Actualizaré el tutorial más tarde cuando las extensiones pecl sean compatibles con PHP 7.1.

Pruebe la versión de PHP:

cd /opt/php-7.1/bin  
./php --version

La salida debería ser similar a esta captura de pantalla.

Tenga en cuenta: La captura de pantalla es de PHP 7.1.16, el tutorial se actualiza continuamente para nuevas versiones de PHP 7.1, pero no tomamos nuevas capturas de pantalla cada vez, por lo que la versión de PHP 7.1 que verá en su servidor podría ser más nueva. La versión actual de este tutorial es para php-7.1.16.

5 Habilitar Memcache (opcional)

En este capítulo, compilaré y habilitaré la extensión PHP Memcached.

El primer paso es instalar el paquete libmemcached-dev de Debian.

apt-get install libmemcached-dev

Luego cree un directorio, descargue la extensión PHP memcache de Github, descomprima el archivo y entre en el directorio que contiene los archivos descomprimidos.

mkdir /usr/local/src/php7-build/php-memcache  
cd /usr/local/src/php7-build/php-memcache  
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip  
unzip php7.zip  
cd php-memcached-php7

Prepare las fuentes ejecutando el comando phpize de PHP 7.1.

/opt/php-7.1/bin/phpize

Configure y construya la extensión PHP memcache.

./configure --with-php-config=/opt/php-7.1/bin/php-config  
make  
make install

Para habilitar la extensión Memcache, abra /opt/php-7.1/lib/php.ini…

nano /opt/php-7.1/lib/php.ini

… y agregue la siguiente línea al final:

[...]  
extension=memcached.so

2.1 Instalar la extensión xDebug (opcional)

El módulo xDebug es una extensión de depuración para PHP. La instalación es opcional.

Instale xDebug con estos comandos.

cd /opt/php-7.1/etc  
pecl -C ./pear.conf update-channels  
pecl -C ./pear.conf install xdebug

Luego edite el archivo php.ini con un editor:

nano /opt/php-7.1/lib/php.ini

y agregue la siguiente línea al final del archivo:

zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so

Finalmente reinicie el demonio php-fpm:

service php-7.1-fpm restart

7 Habilitar PHP 7.1 en ISPConfig

En ISPConfig 3, puede configurar la nueva versión de PHP en Sistema > Versiones adicionales de PHP. En la pestaña Nombre, solo complete un nombre para la versión de PHP (por ejemplo, PHP 7.1) - esta versión de PHP se listará bajo este nombre en la configuración del sitio web en ISPConfig:

Ingrese el nombre de la versión personalizada de PHP

Vaya a la pestaña Configuración de FastCGI y complete los campos de la siguiente manera:

Ruta al binario PHP FastCGI: /opt/php-7.1/bin/php-cgi  
Ruta al directorio php.ini: /opt/php-7.1/lib

PHP 7.1 FastCGI

Luego vaya a la pestaña Configuración de PHP-FPM y complete los campos de la siguiente manera:

Ruta al script de inicio de PHP-FPM: /etc/init.d/php-7.1-fpm  
Ruta al directorio php.ini: /opt/php-7.1/lib  
Ruta al directorio del pool de PHP-FPM: /opt/php-7.1/etc/php-fpm.d  

Configuraciones de PHP 7.1 FPM

7 Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.