Ubuntuサーバー18.04.1でPHP 7.2.7でZipArchive::setEncryptionName
を使用したい
問題は、setEncryptionName
が1.2以上のLibzipバージョンを必要とすることです
PHP情報からのデフォルト構成:
助けにならなかったコマンド:
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)
(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
元のバージョンに戻すには(libzip5を使用しており、以前にインストールしたパッケージが必要ない場合):
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