web-dev-qa-db-ja.com

ubuntu 18.04およびPHP 7.2でLibzipを1.2に更新する方法

Ubuntuサーバー18.04.1でPHP 7.2.7でZipArchive::setEncryptionNameを使用したい

問題は、setEncryptionNameが1.2以上のLibzipバージョンを必要とすることです

PHP情報からのデフォルト構成:

  • Zipバージョン1.15.2
  • Libzipバージョン1.1.2

助けにならなかったコマンド:

  • Sudo apt-get update && Sudo apt-get install libzip4
    libzip4はすでに最新バージョンです(1.1.2-1.1)

  • Sudo apt-get install php-Zip
    php-Zipはすでに最新バージョンです(1:7.2 + 60ubuntu1)

4
Roman

(1)Launchpadで新しいバージョンの libzipおよびlibzip-devを見つけます 。現在はThe Eoan Ermineの下の1.5.1です。正しいdebファイルをダウンロードします(libzip-dev_1.5.1-0ubuntu1_AMD64.debおよびlibzip5_1.5.1- 0ubuntu1_AMD64.deb)。

(2)でインストールする

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

いくつかの依存関係が欠落している可能性があります。最初にaptを使用してインストールを試みることができるため、Launchpadから「互換性のない」パッケージをダウンロードする必要はありません。次に、このコマンドを再実行します。

(3)php-Zipをインストールします。 PEAR(PECL)をインストールして、php-Zipを新しいバージョンにアップグレードします。また、PECLがphp-Zipをビルドするために必要なphp-devをインストールします。

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

(4)php-Zipをアップグレードして、新しいlibzipをサポートします。

Sudo pecl install Zip

(5)おそらく開発ライブラリはもう必要ありません。

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

(6)正しいlibzipバージョンがある場合は、phpinfo()を参照してください。ウェブサーバーの再起動が必要になる場合があります。

(7)aptがphp-Zipを自動的にアップグレードし、カスタムインストールが破損するのを防ぐことができます。ただし、phpをpeclで手動でアップグレードするか、新しいバージョンが新しいlibzipをサポートしているかどうかを確認する必要があります。 (Sudo dpkg -l | grep Zipでインストール済みバージョンを参照)

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

元のバージョンに戻すには(li​​bzip5を使用しており、以前にインストールしたパッケージが必要ない場合):

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