web-dev-qa-db-fra.com

Mettre à niveau vers la dernière version PHP dans ubuntu 16.04

J'utilise NextCloud sur mon serveur et NextCloud m'informe que:

Vous exécutez actuellement PHP 7.0.32-0ubuntu0.16.04.1. Mettez à niveau votre version PHP pour profiter des performances et des mises à jour de sécurité fournies par le PHP Groupez dès que votre distribution le supporte.

J'ai donc essayé de me mettre à niveau OS (Ubuntu 16.04), en exécutant:

apt-get update apt-get dist-update

Ensuite, j'ai redémarré le serveur et j'ai réexécuté les commandes ci-dessus. Après tout cela, lorsque je me connecte depuis le terminal, je reçois:

Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-83-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.

et ma PHP est toujours PHP 7.0.32-0ubuntu0.16.04.1 (cli) ( NTS ).

Cela signifie que PHP 7.0.32 est la dernière version possible que je peux installer dans ubuntu 16.04;

11
yaylitzis

La version par défaut PHP pour Ubuntu 16.04 est 7.0. Si vous souhaitez installer une nouvelle version de PHP le 16.04, vous devez utiliser un PPA supplémentaire (car il est illustré ci-dessous) ou vous devez le compiler vous-même.

Mon serveur avec Ubuntu 16.04 utilise actuellement PHP 7.2 et il existe plusieurs instances opérationnelles de WordPress et MediaWiki. Le serveur Web est Apache 2.4. Les commandes que je ' ve utilisé pour migrer de PHP 7.0 à 7.2 sont:

# Add the repository 'ppa:ondrej/php'
Sudo apt-get install software-properties-common
Sudo add-apt-repository ppa:ondrej/php
Sudo apt update

# Install PHP 7.2
Sudo apt install -y php7.2 php7.2-cli libapache2-mod-php7.2
Sudo apt install -y php-imagick php-gettext php-memcache php-apcu php-pear php-xml php-xmlrpc
Sudo apt install -y php-memcached php-mysql php-intl php-mbstring php-curl php-Gd php-imagick
Sudo apt install -y php7.2-common php7.2-mysql php7.2-cgi 
Sudo apt install -y php7.2-curl php7.2-Zip php7.2-mbstring php7.2-xmlrpc php7.2-Gd php7.2-xml php7.2-xsl
Sudo apt install -y php7.2-dev php7.2-bz2 php7.2-intl php7.2-json php7.2-opcache php7.2-readline 
Sudo apt install -y php7.2-imap php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-bcmath #php7.2-mcrypt

# Update the Apache's PHP version
Sudo a2dismod php7.0
Sudo a2enmod php7.2
Sudo systemctl restart Apache2.service

# Update the CLI PHP version
Sudo update-alternatives --set php /usr/bin/php7.2

Dans le référentiel ppa:ondrej/php PHP 7.3 est également disponible, je pense que je vais bientôt migrer vers cette dernière version. Voici les réglages supplémentaires de mon /etc/php/7.2/Apache2/php.ini réalisés selon quelques WordPress et manuels MediaWiki:

zlib.output_compression = On
max_execution_time = 600
max_input_vars = 3000
memory_limit = 512M
post_max_size = 256M
upload_max_filesize = 128M
allow_url_fopen = Off
pcre.backtrack_limit=1000000
session.cookie_secure = True
session.gc_maxlifetime = 14400
session.cache_expire = 540
mbstring.encoding_translation = On

Mise à jour 04.2019

J'ai utilisé l'ensemble de commandes ci-dessus pour installer PHP 7. sur Ubuntu 16.04 et tout s'est très bien passé. Remplacez simplement 7.2 avec 7.3 dans ces commandes - l'ensemble du processus a pris environ 7 minutes.


Mise à jour 02.202

J'ai migré vers PHP 7.4 et tout s'est bien passé, au cours de ce processus, j'ai utilisé les étapes suivantes (remarque, à cette date, NextCloud ne prend pas en charge php7 .4 pour l'instant):

# Absolutely mandatory step
Sudo apt update
# Generate list of php7.4 packages on tbe base of the installed 7.3 ones
# Remove 'echo' to install the packages
for pkg in $(Sudo apt-cache policy *php7.3* | grep -P '^(lib.*|php)7.3.*:$' | sed -e 's/:$//' -e 's/7.3/7.4/');
do
    echo Sudo apt install "$pkg" -y;
done 2>/tmp/php7.4.install.error.log
# Inspect the error log for some fatal errors, 
# Some old dependencies could missing - it's normal
cat /tmp/php7.4.install.error.log
# Mandatory step; If there is a trouble, tray: Sudo apt install -f
Sudo apt update && Sudo apt upgrade
# Create a backup copy of the new php.ini 
Sudo cp /etc/php/7.4/Apache2/php.ini{,.default}
# Compare the old and the new php.ini files
# Apply the necessary changes to 7.4/Apache2/php.ini
# Compare the files again in order to inspect for typos 
colordiff --side-by-side --left-column --width=240 --show-c-function /etc/php/7.{3,4}/Apache2/php.ini
# Switch the version within Apache
Sudo a2dismod php7.3 && Sudo a2enmod php7.4
Sudo systemctl restart Apache2
16
pa4080

Vous pouvez installer manuellement une version plus récente. Mais en général, vous ne voulez pas le faire, car vous devez télécharger manuellement les mises à jour et les reconstruire.

Le point des versions LTS est la stabilité. Vous savez que la version PHP livrée aujourd'hui en 18.04 sera maintenue avec des mises à jour de sécurité pendant cinq ans, sans avoir à mettre à niveau la version - ce qui peut entraîner des problèmes avec les programmes qui dépendent de la version actuelle.

18.04 a PHP 7.2 disponible. Il peut être un bon chemin de mise à niveau à partir de 16.04, comme les deux versions LTS qui ont une période de support de cinq ans.

En ce qui concerne la sécurité, ne comptez pas sur la version pour cela. Les mainteneurs d'Ubuntu et les mainteneurs de Debian rétroportent les correctifs de sécurité de l'amont vers les paquets pris en charge pendant ces cinq années.

2
vidarlo