PHP7.3でもzip拡張モジュールを有効にしてみた
ウチのBlogでは使ってない筈なんだけど、何となく・・・
PHP 7.3.2ビルド(configure)の際、以前の PHP 5.6 で有効にしていた機能は、できる限り有効にしたいと考えた。まぁ、使っていない機能を詰め込んでもメモリを無駄食いするだけなのだが、BlogのPHPソースの中身の事は何も知らないので、万一使っていた機能を削ってしまって動作異常で悩むのも嫌だ。
と言うわけで、PHP 5.6 で指定していた configure のオプションを PHP 7.3.2 にも同じように指定したのだが、PHP 7.3系では --enable-zip オプション指定時に使用される libzipが PHPにバンドルされなくなったので、事前に自力で libzipをインストールしておく必要がある事が分かった。
PHP: Zip - Manualを読むと、Windowsで良く使われているアーカイブ形式(.zip)を読み書きするための拡張モジュールらしい。99.9% 使っていないとは思うが、これも勉強と思い、とりあえず libzipのインストールができるか挑戦してみた。
1) libzipのダウンロード
libzipホームページ:<https://libzip.org>
現時点での最新版は libzip-1.5.1 だが、libzip-1.5系は何故か SSLライブラリをリンクしようとする。そして、何故か分からんのだが、ウチの環境では OpenSSL、LibreSSL のどちらを使用させてもリンクでundefが出てコケる。単なる圧縮、伸張ライブラリが何故SSLを使うのか分からん(暗号化かなぁ?)。
リリースノートを見ると、libzip-1.5系より前で一番新しいのは libzip-1.4.0 のようなので、<https://libzip.org/download/libzip-1.4.0.tar.xz>を使用することにした(*1)。
$ xzcat libzip-1.4.0.tar.xz | tar xf -
$ cd libzip-1.4.0
|
2) ビルド方法("build.sh"スクリプト作成)
lizip は cmake を使ったモダンなビルド方法になっていた。なので、事前に cmake もインストールしておく必要がある。ウチの自宅サーバ(Mac mini)には少し古い cmake をインストールしてあったが、正直使った記憶がない。cmake を使うのは今回が初めてかもしれない。ビルドスクリプトはこんな感じ。
#!/usr/local/bin/bash -x
export MACOSX_DEPLOYMENT_TARGET=10.4
export GCC="/usr/local"
export PATH="${GCC}/bin:$PATH"
export DYLD_LIBRARY_PATH="${GCC}/lib:${DYLD_LIBRARY_PATH}"
export CC="${GCC}/bin/gcc"
export CXX="${GCC}/bin/g++"
mkdir build
cd build
cmake ..
make
make test
3) ビルドしてインストール
$ chmod +x build.sh
$ ./build.sh
$ cd build
$ sudo make install
|
4) PHPの configure に指定
これで libzip は用意できたので、PHP-7.3.2 の configure に以下の指定を追加してビルドすれば良いはずだ。
./configure --enable-zip --with-libzip=/usr/local
|
備考(*1):
PHPは libzip-0.11.2(2013/12/19リリース)以降を推奨だそうで随分と古いものでも大丈夫っぽい。しかし、古い libzip には幾つかセキュリティバグが発見されているので、できるだけ新しいものを使った方が良いだろう。
|