En este ejemplo explicaré como actualizar PHP 7.0 a 7.1 (también sirve para PHP 5.6).
Para ello primero necesitaremos satisfacer las dependencias.
NOTA: Yo lo explicaré para instalarlo todo dentro de /opt, así podremos probar nuestro proyecto con la nueva versión de PHP sin tener que modificar la configuración real del equipo. Y si todo va bien, veremos de dejarlo permanente.
1. Preparación y dependencias
Creamos una carpeta donde estarán todos los programas necesarios e instalamos en el equipo lo necesario para poder compilar.
1 2 | mkdir /opt/php apt-get install build-essentials |
El orden de las dependencias son:
- PHP depende de Apache para generar el archivo php_module
- Apache depende de APR y APR-Util (la primera se descarga y se extráe y la segunda hay que compilarla).
Podemos descargarlas todas desde:
PHP: http://php.net/downloads.php
Apache: http://httpd.apache.org/docs/2.4/install.html#download
APR: http://apr.apache.org/
APR-UTILS: https://apr.apache.org/download.cgi
Una vez descargadas y extraídas en sus carpetas, movemos los paquetes APR y APR-Util a: /opt/php/httpd-2.4.27/srclib/
A continuación compilamos el programa APR-Util
1 2 3 | cd /opt/php/httpd-2.4.27/srclib/apr-util-xxxx ./configure --prefix=/opt/php/httpd-2.4.27/srclib/apr-util make && make install |
Con esto ya tenemos las dependencias de Apache satisfechas. Vamos a compilarlo.
1 2 3 | cd/opt/php/httpd-2.4.27 ./configure --prefix=/opt/php/apache --enable-so --with-pcre=/opt/php/httpd-2.4.27/srclib/apr-util/build/bin/pcre-config make && make install |
Esto compila e instala esta versión de Apache en /opt/php/apache (no usaremos este apache, solo lo necesitamos para generar la extensión de PHP).
2. Compilar PHP
Para compilar PHP seguiremos pasos parecidos a los casos anteriores:
1 2 3 | cd /opt/php/php-7.1.8 ./configure --prefix=/opt/php/current --with-apxs2=/opt/php/apache/bin/apxs make && make install |
Para probar que funciona podéis lanzar:
1 | opt/php/current/bin/php -v |
3. Configurar Apache
Ahora que tenemos PHP compilado y funcionando vamos a usarlo en nuestro Apache actual que ya teníamos funcionando con la versión anterior de PHP.
Para ello creamos los archivos (los podemos duplicar de la configuración PHP anterior):
- /etc/apache2/mods-available/php7.1.conf
- /etc/apache2/mods-available/php7.1.load
En esté último archivo hay que cambiar la ruta de PHP a esta:
LoadModule php7_module /opt/php/apache/modules/libphp7.so
Activamos el módulo y reiniciamos el servidor de apache:
1 2 3 | a2dismod php7.0 a2enmod php7.1 service apache2 restart |
LISTO!!
Ya tenemos la nueva versión de PHP funcionando en nuestro servidor.
4. Instalar extensiones de PHP
Esta instalación de PHP viene con lo básico. Para añadir nuevas extensiones tendremos que repetir el paso 2 con más opciones.
MCript -> https://sourceforge.net/projects/mcrypt/files/Libmcrypt/
y sus dos dependencias: $ apt-get install libmcrypt-dev libmhash-dev
1 2 3 | cd /opt/php/libmcrypt-xxxxx ./configure --prefix=/opt/php/libmcrypt-2.5.8/dist make && make install |
Curl -> https://curl.haxx.se/download.html
1 2 3 | cd /opt/php/curl-xxxx ./configure --prefix=/opt/php/curl-xxxxx/dist make && make install |
OpenSSL -> https://github.com/openssl/openssl/tags
1 2 3 | cd /opt/php/openssl-OpenSSL_xxxxx ./configure --prefix=/opt/php/openssl-OpenSSL_xxxxx make && make install |
En este caso re-compilaremos la librería de PHP con las extensiones necesarias para un proyecto con Symfony.
1 2 3 4 5 | cd /opt/php/php-7.1.8 ./configure --prefix=/opt/php/current --with-apxs2=/opt/php/apache/bin/apxs --with-mcrypt=/opt/php/li bmcrypt-2.5.8/dist --with-pdo-mysql --with-xmlrpc --enable-mbstring --enable-zip --with-zlib --with-mysqli --with-curl=/opt/php/curl-7.54.1/dist --w ith-config-file-scan-dir=/etc/php/7.0/apache2/conf.d --enable-sockets --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-openssl=/opt/php/openssl-OpenSSL_1_0_2k/dist make && make install |