Com instal·lar PHP 7 per a Apache o Nginx a Ubuntu 14.04 i 14.10


Mesos després del llançament de la versió estable de PHP 7.0, aquest podria ser el moment adequat perquè penseu a actualitzar-lo des de les versions antigues.

Sempre hi ha precaució sobre les actualitzacions, especialment en un entorn de producció, però ara és una bona idea actualitzar per gaudir de millores de velocitat, i també de funcions com la indicació de tipus escalar i moltes més.

Podeu instal·lar dues versions de PHP al vostre sistema i utilitzar-ne una amb finalitats de prova, però recordeu que només habiliteu un mòdul PHP Apache en un temps determinat.

Aquesta guia se centra en l'actualització de PHP 5.X, utilitzant mod_php en connexió amb el servidor web Apache o PHP-FPM en connexió amb el servidor web Nginx.

  1. Instal·leu PHP 7 a Ubuntu 14.04 i 14.10
  2. Actualització a PHP 7.0 amb el servidor web Apache
  3. Actualització a PHP 7.0 amb el servidor web Nginx

Ara analitzem com podeu actualitzar a la darrera versió de PHP i també configurar el vostre sistema per utilitzar-lo.

Com instal·lar PHP 7 a Ubuntu 14.04 i 14.10

Primer, haureu d'afegir el PPA mantingut per Ondřej Surý per a Debian i els seus derivats com Ubuntu executant l'ordre següent:

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

A continuació, actualitzeu el vostre sistema de la següent manera:

$ sudo apt-get update

Ara tot està preparat i podeu instal·lar PHP 7.0, però mirarem l'actualització d'Apache i Nginx en diferents seccions.

Aquesta secció és per a sistemes que executen Apache, on el codi PHP s'executa mitjançant el mòdul mod_php. Instal·leu la darrera versió de PHP executant l'ordre següent:

$ 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 s'ha actualitzat al vostre sistema, però si feu servir el sistema de gestió de bases de dades MySQL, haureu d'executar l'ordre següent per actualitzar l'enllaç PHP-MySQL i també haureu d'instal·lar alguns mòduls útils com Curl, GD , Cli, JSON, etc.

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

Si voleu instal·lar mòduls PHP7.0 addicionals, podeu utilitzar l'ordre apt-cache per llistar tots els mòduls PHP7.0 i instal·lar-los.

$ 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

Un cop instal·lats PHP7.0 i els seus mòduls, podeu reiniciar el vostre servidor web Apache i verificar la versió de PHP tal com es mostra:

$ 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

També podeu verificar la informació PHP7 creant un fitxer info.php al directori /var/www/html.

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

Col·loqueu el codi següent i accediu a la pàgina mitjançant http://server_IP-address/info.php.

<?php
phpinfo();
?>

Aquesta secció us guiarà pel procés d'actualització a PHP7.0 i d'actualització de PHP-FPM amb el servidor web Nginx, on el codi PHP s'executa mitjançant PHP-FPM.

Executeu l'ordre següent per instal·lar els darrers paquets PHP-FPM:

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

PHP s'ha actualitzat, però si feu servir MySQL, haureu d'executar l'ordre següent per actualitzar l'enllaç PHP-MySQL i alguns mòduls addicionals com es mostra:

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

A continuació, heu d'afegir la directiva fastcgi_pass al fitxer /etc/nginx/sites-enabled/default o tots els fitxers dels vostres llocs virtuals que han d'utilitzar i suportar PHP, ja que la ruta del PHP -El fitxer de socket FPM que PHP utilitza per comunicar-se amb Nginx ha canviat.

Utilitzeu el vostre editor preferit i obriu el fitxer per editar-lo de la següent manera:

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

Modifiqueu o afegiu de la manera següent:

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;
}

A continuació, reinicieu Nginx i php-fpm de la següent manera:

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

Finalment, podeu provar si PHP funciona o no comprovant primer la vostra versió de PHP i després provant-la amb el servidor web.

$ php -v

Obteniu informació sobre els vostres paquets PHP escrivint un petit fitxer info.php al directori /usr/share/nginx/html/:

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

Poseu aquest codi al vostre fitxer info.php:

<?php
phpinfo();
?>

Desa i surt del fitxer.

Obriu el vostre navegador web, introduïu http://server_IP-address/info.php i hauríeu de poder veure la pàgina de sota que us mostra detalls sobre el vostre paquet PHP.

Ara podeu utilitzar PHP 7.0 amb gust al vostre sistema Ubuntu 14.04/14.10 i espero que aquesta guia us sigui útil.

Per a qualsevol informació addicional sobre l'actualització de PHP o per a preguntes, els vostres comentaris són benvinguts a la secció de comentaris següent.