php 7.4.x ソース構築時、libzipのエラー 2021版

以前の記事

php 7.4.x ソース構築時、libzipのエラー
php 7.4.x ソース構築時、libzipのエラーで手間取ったので、そのエラーの覚え書きを・・・ 2021/5/8更新、↓この記事の内容が正しいです。 php configure ./configure --with-...

は、間違いでした。

以下が本来の手法(のはず(汗))です・・・

libzip 1.7.3

libzip-1.7.3(この時点で最新版)

cmake3 -DCMAKE_INSTALL_PREFIX=/usr/local/libzip
make
make install

↑ とインストール

/usr/local/libzip/lib64/pkgconfig/

以下に「libzip.pc」があるのだが・・・

libzip.pc
の中身は、

prefix=/usr/local/libzip
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib64
includedir=${prefix}/include

zipcmp=${exec_prefix}/bin/zipcmp

Name: libzip
Description: library for handling zip archives
Version: 1.7.3
Libs:  -L${libdir} -lzip
Libs.private:  -lbz2 -llzma -lssl -lcrypto -lz
Cflags: -I${includedir}

php configure

configure設定時に、

# export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/:/usr/local/libzip/lib64/pkgconfig/"

↑ と、libzip.pc の位置を環境変数で指定する(後半の指定がlibzipのもの)

# export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/libzip/lib64/pkgconfig/"

↑ と行っても大丈夫。

php 7.4.xのconfigure時に、「–with-zip」というオプションで行えばいいような気がするが・・・

./configure --with-apxs2=/usr/local/apache2/bin/apxs -with-mysqli --with-pdo-mysql --enable-mbstring --enable-pcntl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-ftp --enable-gd --with-jpeg --with-webp --with-xpm --with-zlib --with-zip --with-snmp --enable-sockets --with-freetype --enable-cgi --with-curl --enable-intl --with-gettext --with-openssl --enable-bcmath --enable-exif

上記、configureは、正常終了する

php make エラー

しかし、make時に

 -lsqlite3 -lxml2 -lnetsnmp -lssl -lssl -lcrypto -lm -lcrypt -lxml2 -lxml2 -lxml2 -lzip -lz -lssl -lcrypto -lcrypt  -o sapi/cli/php
ext/zip/.libs/php_zip.o: In function `php_zip_status_sys':
/root/src/php-7.4.19/ext/zip/php_zip.c:439: undefined reference to `zip_get_error'
/root/src/php-7.4.19/ext/zip/php_zip.c:440: undefined reference to `zip_error_code_system'
/root/src/php-7.4.19/ext/zip/php_zip.c:441: undefined reference to `zip_error_fini'
ext/zip/.libs/php_zip.o: In function `php_zip_status':
/root/src/php-7.4.19/ext/zip/php_zip.c:421: undefined reference to `zip_get_error'
/root/src/php-7.4.19/ext/zip/php_zip.c:422: undefined reference to `zip_error_code_zip'
/root/src/php-7.4.19/ext/zip/php_zip.c:423: undefined reference to `zip_error_fini'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_setEncryptionName':
/root/src/php-7.4.19/ext/zip/php_zip.c:2252: undefined reference to `zip_file_set_encryption'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_setCompressionName':
/root/src/php-7.4.19/ext/zip/php_zip.c:2369: undefined reference to `zip_set_file_compression'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_getExternalAttributesIndex':
/root/src/php-7.4.19/ext/zip/php_zip.c:2213: undefined reference to `zip_file_get_external_attributes'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_getExternalAttributesName':
/root/src/php-7.4.19/ext/zip/php_zip.c:2184: undefined reference to `zip_file_get_external_attributes'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_setExternalAttributesIndex':
/root/src/php-7.4.19/ext/zip/php_zip.c:2148: undefined reference to `zip_file_set_external_attributes'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_setExternalAttributesName':
/root/src/php-7.4.19/ext/zip/php_zip.c:2123: undefined reference to `zip_file_set_external_attributes'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_getCommentName':
/root/src/php-7.4.19/ext/zip/php_zip.c:2313: undefined reference to `zip_file_get_comment'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_getCommentIndex':
/root/src/php-7.4.19/ext/zip/php_zip.c:2337: undefined reference to `zip_file_get_comment'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_setCommentName':
/root/src/php-7.4.19/ext/zip/php_zip.c:2062: undefined reference to `zip_file_set_comment'
/root/src/php-7.4.19/ext/zip/php_zip.c:2062: undefined reference to `zip_file_set_comment'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_setCommentIndex':
/root/src/php-7.4.19/ext/zip/php_zip.c:2090: undefined reference to `zip_file_set_comment'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_renameName':
/root/src/php-7.4.19/ext/zip/php_zip.c:2509: undefined reference to `zip_file_rename'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_renameIndex':
/root/src/php-7.4.19/ext/zip/php_zip.c:2479: undefined reference to `zip_file_rename'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_addFromString':
/root/src/php-7.4.19/ext/zip/php_zip.c:1868: undefined reference to `zip_file_add'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_addEmptyDir':
/root/src/php-7.4.19/ext/zip/php_zip.c:1646: undefined reference to `zip_dir_add'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_getStatusString':
/root/src/php-7.4.19/ext/zip/php_zip.c:1603: undefined reference to `zip_get_error'
/root/src/php-7.4.19/ext/zip/php_zip.c:1604: undefined reference to `zip_error_strerror'
ext/zip/.libs/php_zip.o: In function `php_zip_object_free_storage':
/root/src/php-7.4.19/ext/zip/php_zip.c:1042: undefined reference to `zip_discard'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_setEncryptionIndex':
/root/src/php-7.4.19/ext/zip/php_zip.c:2276: undefined reference to `zip_file_set_encryption'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_setCompressionIndex':
/root/src/php-7.4.19/ext/zip/php_zip.c:2393: undefined reference to `zip_set_file_compression'
ext/zip/.libs/php_zip.o: In function `php_zip_add_file':
/root/src/php-7.4.19/ext/zip/php_zip.c:304: undefined reference to `zip_file_add'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_close':
/root/src/php-7.4.19/ext/zip/php_zip.c:1550: undefined reference to `zip_discard'
ext/zip/.libs/php_zip.o: In function `zm_startup_zip':
/root/src/php-7.4.19/ext/zip/php_zip.c:3197: undefined reference to `zip_libzip_version'
ext/zip/.libs/php_zip.o: In function `c_ziparchive_getStatusString':
/root/src/php-7.4.19/ext/zip/php_zip.c:1605: undefined reference to `zip_error_fini'
ext/zip/.libs/php_zip.o: In function `zm_info_zip':
/root/src/php-7.4.19/ext/zip/php_zip.c:3231: undefined reference to `zip_libzip_version'
ext/zip/.libs/zip_stream.o: In function `php_zip_ops_read':
/root/src/php-7.4.19/ext/zip/zip_stream.c:63: undefined reference to `zip_file_get_error'
/root/src/php-7.4.19/ext/zip/zip_stream.c:65: undefined reference to `zip_error_strerror'
/root/src/php-7.4.19/ext/zip/zip_stream.c:66: undefined reference to `zip_error_fini'
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1

↑ これでもエラーとなる

どうやってもうまくいかない。

configure時の

--with-libzip
--enable-zip
--with-libzip=DIR
--without-libzip

などのオプションは、7.4.xxでは無くなっている

libzip 0.11では、make可能であるが、古い・・・

↑と、libzip 0.11では正常に設定ができる。

peclでインストール

./configure --with-apxs2=/usr/local/apache2/bin/apxs -with-mysqli --with-pdo-mysql --enable-mbstring --enable-pcntl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-ftp --enable-gd --with-jpeg --with-webp --with-xpm --with-zlib --with-snmp --enable-sockets --with-freetype --enable-cgi --with-curl --enable-intl --with-gettext --with-openssl --enable-bcmath --enable-exif --with-pear

↑ と、php、configure時、zipオプションを外す

–with-pear
で、
/usr/local/bin/pecl
がインストールされる

# make

(略)

crypto -lm -lcrypt -lxml2 -lxml2 -lxml2 -lz -lssl -lcrypto -lcrypt  -o sapi/cgi/php-cgi
Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
invertedregexiterator.inc
directorygraphiterator.inc
directorytreeiterator.inc
clicommand.inc
pharcommand.inc
phar.inc

Build complete.
Don't forget to run 'make test'.

↑ コンパイル出来ました。

# pecl install -f zip
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading zip-1.19.2.tgz ...
Starting to download zip-1.19.2.tgz (325,915 bytes)
..................................................................done: 325,915 bytes
19 source files, building

(略)

Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-zts-20190902/zip.so'
install ok: channel://pecl.php.net/zip-1.19.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=zip.so" to php.ini

↑と、peclコマンドで、zipを入れます。

そして「php.ini」に「extension=zip.so」を追加します。

↑ libzip 1.7.3

の最新版が入りました。

 

 

タイトルとURLをコピーしました