No.204


【PHP】【Pear】PECL::zip 1.14.0 注意事項

PECL::zipのインストールでちょいハマリ…

 VagrantのCentOS7開発環境構築用のchefにPECL::zipをバージョン指定しないで書いていた。となると実行コマンドは下記となり、必然的に最新版がインストールされる。

pecl -d preferred_state=stable install -a zip

 まあ、聡い人ならもうおわかりかと思うが、PECL::zipのバージョンアップでエラーが出るようになってしまいちょいハマリしたので解決方法をメモ。


エラー

 最終的に下記2つのエラーが発生していた。

configure: error: Please reinstall the libzip distribution
configure: error: system libzip must be upgraded to version >= 0.11

解決方法

 PECL::zipのバージョン指定を行った。

 指定するバージョンは1.13.5。理由は後述

pecl -d preferred_state=stable install -a zip/zip-1.13.5

 chefのreciptだと

php_pear 'zip' do
    version :'1.13.5'
    action :install
end

 となる。


原因

 PECL::zipが1.14.0にバージョンアップしていた際にいろいろと必要項目が変わっていた。

PECL::zip

PECL::zip 1.14.0 release note

 リリースノートの以下の部分に注目。

...
- add ZipArchive::setEncryptionName and ZipArchive::setEncryptionIndex
methods available with libzip >= 1.2.0 (Remi)
...
- support for system libzip on Windows (Anatol)
- drop bundled libzip, only support system library (Remi)
  • 内蔵していたlibzipの使用をやめシステムのlibzipを使うようになった。
  • libzipはバージョン0.2.0以降が必要。

 つまりyum install libzip libzip-develなどが必要になる。
 ところがCentOS公式のlibzipはバージョンが0.11.0なのだ。 orz

 というわけで、Vagrantの開発環境用なのでPECL::zipのバージョンを1.13.5に戻すことで一時的に対応した。