web-dev-qa-db-fra.com

Comment mettre à jour Libzip à 1.2 sur Ubuntu 18.04 et PHP 7.2

Je veux utiliser ZipArchive::setEncryptionName sur le serveur Ubuntu 18.04.1 avec PHP 7.2.7

Le problème est que setEncryptionName a besoin d'une version de Libzip d'au moins 1.2

Configuration par défaut de PHP info:

  • Zip version 1.15.2
  • Libzip version 1.1.2

Commandes qui n'ont pas aidé:

  • Sudo apt-get update && Sudo apt-get install libzip4
    libzip4 est déjà la dernière version (1.1.2-1.1)

  • Sudo apt-get install php-Zip
    php-Zip est déjà la dernière version (1: 7.2 + 60ubuntu1)

3
Roman

(1) Recherchez une version plus récente de libzip et libzip-dev sur Launchpad . Actuellement, c'est 1.5.1 sous The Disco Dingo proposé (univers). Téléchargez les fichiers deb appropriés (libzip-dev_1.5.1-0ubuntu1_AMD64.deb et libzip5_1.5.1-0ubuntu1_AMD64.deb).

(2) Installez-les avec

Sudo dpkg -i libzip-dev_1.5.1-0ubuntu1_AMD64.deb libzip5_1.5.1-0ubuntu1_AMD64.deb

Certaines dépendances peuvent manquer, vous pouvez essayer de les installer d'abord avec apt, vous n'avez donc pas besoin de télécharger d'autres paquets "incompatibles" à partir de Launchpad. Relancez ensuite cette commande.

(3) Installez php-Zip. Installez PEAR (PECL) pour mettre à niveau php-Zip vers une version plus récente. Également installer php-dev requis par PECL pour construire php-Zip.

Sudo apt install php-Zip php-pear php-dev

(4) Mettez à niveau php-Zip pour prendre en charge le nouveau libzip.

Sudo pecl install Zip

(5) Vous n’avez probablement plus besoin des bibliothèques de développement.

Sudo apt purge php-dev libzip-dev
Sudo apt autoremove

(6) Voir phpinfo () si vous avez la version correcte de libzip. Vous devrez peut-être redémarrer votre serveur Web.

(7) Vous pouvez empêcher apt de mettre à jour automatiquement votre php-Zip, brisant ainsi votre installation personnalisée. Mais alors vous devriez vous rappeler de mettre à jour manuellement php avec pecl, ou vérifier si la version plus récente supporte le plus récent libzip. (Voir la version installée avec Sudo dpkg -l | grep Zip)

Sudo apt-mark hold php<installed version>-Zip

Pour récupérer la version d'origine (en supposant que vous avez utilisé libzip5 et que vous n'avez pas besoin des packages précédemment installés):

Sudo apt-mark unhold php<installed version>-Zip
Sudo pecl uninstall Zip
Sudo apt purge php-pear libzip5 php-Zip
Sudo apt autoremove
Sudo apt install php-Zip
1
user1768761