Cómo instalar PHP 7 para Apache o Nginx en Ubuntu 14.04 y 14.10


Meses después del lanzamiento de la versión estable de PHP 7.0, este podría ser el momento adecuado para pensar en actualizarlo desde las versiones anteriores.

Siempre hay precaución sobre las actualizaciones, especialmente en un entorno de producción, pero es una buena idea actualizar ahora para disfrutar de las mejoras de velocidad y también características como sugerencias de tipo escalar y muchas más.

Puede instalar dos versiones de PHP en su sistema y usar una con fines de prueba, pero recuerde que solo habilita un módulo PHP Apache en un momento dado.

Esta guía se centra en la actualización desde PHP 5.X, utilizando mod_php en conexión con el servidor web Apache o PHP-FPM en conexión con el servidor web Nginx.

  1. Instale PHP 7 en Ubuntu 14.04 y 14.10
  2. Actualización a PHP 7.0 en Apache Web Server
  3. Actualización a PHP 7.0 en el servidor web Nginx

Ahora permítanos profundizar en cómo puede actualizar a la última versión de PHP y también configurar su sistema para usarlo.

Cómo instalar PHP 7 en Ubuntu 14.04 y 14.10

Primero, deberá agregar el PPA mantenido por Ondřej Surý para Debian y sus derivados, como Ubuntu, ejecutando el siguiente comando:

$ sudo add-apt-repository ppa:ondrej/php

A continuación, actualice su sistema de la siguiente manera:

$ sudo apt-get update

Todo está ahora configurado y puede instalar PHP 7.0, pero veremos la actualización para Apache y Nginx en diferentes secciones.

Esta sección es para sistemas que ejecutan Apache, donde el código PHP se ejecuta usando el módulo mod_php . Instale la última versión de PHP ejecutando el siguiente comando:

$ sudo apt-get install php7.0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libapache2-mod-php7.0 libssl1.0.2 php-common php7.0-cli php7.0-common
  php7.0-json php7.0-opcache php7.0-readline
Suggested packages:
  php-pear
The following NEW packages will be installed:
  libapache2-mod-php7.0 libssl1.0.2 php-common php7.0 php7.0-cli php7.0-common
  php7.0-json php7.0-opcache php7.0-readline
0 upgraded, 9 newly installed, 0 to remove and 80 not upgraded.
Need to get 4,371 kB of archives.
After this operation, 17.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

PHP ahora se ha actualizado en su sistema, pero si está utilizando el sistema de administración de base de datos MySQL, deberá ejecutar el siguiente comando para actualizar el enlace PHP-MySQL y también deberá instalar algunos módulos útiles como Curl, GD , Cli, JSON, etc.

$ sudo apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json 

Si desea instalar módulos PHP7.0 adicionales, puede usar el comando apt-cache para enumerar todos los módulos PHP7.0 e instalarlos.

$ sudo apt-cache search php7
php-radius - radius client library for PHP
php-http - PECL HTTP module for PHP Extended HTTP Support
php-uploadprogress - file upload progress tracking extension for PHP
php-mongodb - MongoDB driver for PHP
php7.0-common - documentation, examples and common module for PHP
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.0-cli - command-line interpreter for the PHP scripting language
php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library)
php7.0-dev - Files for PHP7.0 module development
php7.0-curl - CURL module for PHP
php7.0-enchant - Enchant module for PHP
php7.0-gd - GD module for PHP
php7.0-gmp - GMP module for PHP
php7.0-imap - IMAP module for PHP
php7.0-interbase - Interbase module for PHP
php7.0-intl - Internationalisation module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mcrypt - libmcrypt module for PHP
php7.0-readline - readline module for PHP
php7.0-odbc - ODBC module for PHP
php7.0-pgsql - PostgreSQL module for PHP
php7.0-pspell - pspell module for PHP
php7.0-recode - recode module for PHP
php7.0-snmp - SNMP module for PHP
php7.0-tidy - tidy module for PHP
php7.0-xmlrpc - XMLRPC-EPI module for PHP
php7.0-xsl - XSL module for PHP (dummy)
php7.0 - server-side, HTML-embedded scripting language (metapackage)
php7.0-json - JSON module for PHP
php-all-dev - package depending on all supported PHP development packages
php7.0-sybase - Sybase module for PHP
php7.0-sqlite3 - SQLite3 module for PHP
php7.0-mysql - MySQL module for PHP
php7.0-opcache - Zend OpCache module for PHP
php-apcu - APC User Cache for PHP
php-xdebug - Xdebug Module for PHP
php-imagick - Provides a wrapper to the ImageMagick library
php-ssh2 - Bindings for the libssh2 library
php-redis - PHP extension for interfacing with Redis
php-memcached - memcached extension module for PHP, uses libmemcached
php-apcu-bc - APCu Backwards Compatibility Module
php-amqp - AMQP extension for PHP
php7.0-bz2 - bzip2 module for PHP
php-rrd - PHP bindings to rrd tool system
php-uuid - PHP UUID extension
php-memcache - memcache extension module for PHP
php-gmagick - Provides a wrapper to the GraphicsMagick library
php-smbclient - PHP wrapper for libsmbclient
php-zmq - ZeroMQ messaging bindings for PHP
php-igbinary - igbinary PHP serializer
php-msgpack - PHP extension for interfacing with MessagePack
php-geoip - GeoIP module for PHP
php7.0-bcmath - Bcmath module for PHP
php7.0-mbstring - MBSTRING module for PHP
php7.0-soap - SOAP module for PHP
php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
php7.0-zip - Zip module for PHP
php-tideways - Tideways PHP Profiler Extension
php-yac - YAC (Yet Another Cache) for PHP
php-mailparse - Email message manipulation for PHP
php-oauth - OAuth 1.0 consumer and provider extension
php-propro - propro module for PHP
php-raphf - raphf module for PHP
php-solr - PHP extension for communicating with Apache Solr server
php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP
php-gearman - PHP wrapper to libgearman
php7.0-dba - DBA module for PHP

Una vez que PHP7.0 y sus módulos estén instalados, puede reiniciar su servidor web Apache y verificar la versión de PHP como se muestra:

$ sudo service apache2 restart
$ php -v
PHP 7.0.7-1+donate.sury.org~trusty+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

También puede verificar la información de PHP7 creando un archivo info.php en el directorio/var/www/html.

$ sudo vi /var/www/html/info.php

Coloque el siguiente código y acceda a la página a través de http://server_IP-address/info.php .

<?php
phpinfo();
?>

Esta sección lo lleva a través del proceso de actualización a PHP7.0 y actualización de PHP-FPM con el servidor web Nginx, donde el código PHP se ejecuta usando PHP-FPM.

Ejecute el siguiente comando para instalar los últimos paquetes PHP-FPM:

$ sudo apt-get install php7.0
$ sudo apt-get install php7.0-fpm

PHP ahora se ha actualizado, pero si está utilizando MySQL, tendrá que ejecutar el siguiente comando para actualizar el enlace PHP-MySQL y algunos módulos adicionales como se muestra:

$ sudo apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json 

A continuación, debe agregar la directiva fastcgi_pass en el archivo/etc/nginx/sites-enabled/default o todos los archivos para sus sitios virtuales que deben usar y admitir PHP, desde la ruta de PHP -El archivo de socket FPM que PHP usa para comunicarse con Nginx ha cambiado.

Utilice su editor favorito y abra el archivo para editarlo de la siguiente manera:

$ sudo vi /etc/nginx/sites-enabled/default 

Modifique o agregue de la siguiente manera:

location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
                return 404;
        }
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

Luego reinicie Nginx y php-fpm de la siguiente manera:

$ sudo service nginx restart
$ sudo service php7.0-fpm restart

Por último, puede probar si PHP está funcionando o no verificando primero su versión de PHP y luego probándola con el servidor web.

$ php -v

Obtiene información sobre sus paquetes PHP escribiendo un pequeño archivo info.php en el directorio/usr/share/nginx/html /:

$ sudo vi /usr/share/nginx/html/info.php 

Pon este código en tu archivo info.php:

<?php
phpinfo();
?>

Guardar y salir del archivo.

Abra su navegador web, ingrese http://server_IP-address/info.php y debería poder ver la página a continuación que muestra detalles sobre su paquete PHP.

Ahora puede usar PHP 7.0 en su sistema Ubuntu 14.04/14.10 y espero que esta guía le resulte útil.

Para cualquier información adicional sobre la actualización de PHP o preguntas, sus comentarios son bienvenidos en la sección de comentarios a continuación.