2022年12月21日 15:49:28
公式ドキュメント: PHP 7.4の変更点
一部の拡張がpkg-configのみを使用するように移行しています。これにより、--with-foo-dir=DIRなどのパラメータではなく、--with-fooを使用するようになります。カスタムライブラリのパスは、PKG_CONFIG_PATHに追加ディレクトリを設定するか、FOO_CFLAGSおよびFOO_LIBSで明示的に指定します。
影響を受ける拡張とSAPI:
- CURL: --with-curlオプションはディレクトリを受け付けなくなりました。
- Enchant: --with-enchantオプションはディレクトリを受け付けなくなりました。
- FPM: --with-fpm-systemdはlibsystemのチェックにpkg-configのみを使用するようになりました。libsystemの最低要件バージョンは209です。
- GD: --with-gdは--enable-gd(拡張機能を有効にするかどうか)と--with-external-gd(バンドルされたものではなく外部のlibgdを使用するかどうかを選択するため)に変わりました。
- --with-png-dir、--with-zlib-dir、--with-freetype-dir、--with-jpeg-dir、--with-webp-dir、--with-xpm-dirは削除され、それぞれ--with-png、--with-zlib、--with-freetype、--with-jpeg、--with-webp、--with-xpmに変わりました。
- IMAP: --with-kerberos-systemdオプションはディレクトリを受け付けなくなりました。
- Intl: --with-icu-dirは削除され、--enable-intlを使用する場合はlibicuが必要です。
- LDAP: --with-ldap-saslオプションはディレクトリを受け付けなくなりました。
- Libxml: --with-libxml-dirは削除され、--enable-libxmlは--with-libxmlに変わりました。
- --with-libexpat-dirは--with-expatにリネームされ、ディレクトリを受け付けなくなりました。
- Litespeed: --with-litespeedは--enable-litespeedに変わりました。
- Mbstring: --with-onigは削除され、--disable-mbregexを使用する場合はlibonigが必要です。
- ODBC: --with-iodbcオプションはディレクトリを受け付けなくなりました。
- --with-unixODBCはpkg-configを使用するようになりました(推奨)。ただし、古いバージョンではlibodbc.pcがない場合でもディレクトリを受け付けます。
- OpenSSL: --with-opensslオプションはディレクトリを受け付けなくなりました。
- PCRE: --with-pcre-regexは削除され、--with-external-pcreを使用してバンドルされたものではなく外部のPCREライブラリを使用することを選択できます。
- PDO_SQLite: --with-pdo-sqliteオプションはディレクトリを受け付けなくなりました。
- Readline: --with-libeditオプションはディレクトリを受け付けなくなりました。
- Sodium: --with-sodiumオプションはディレクトリを受け付けなくなりました。
- SQLite3: --with-sqlite3オプションはディレクトリを受け付けなくなりました。
- XSL: --with-xslオプションはディレクトリを受け付けなくなりました。
- Zip: --with-libzipは削除され、--enable-zipは--with-zipに変わりました。
注意: 上記は一部の拡張ですが、libiconvのようなサードパーティライブラリがpkg-configファイルを作成していない場合、リンクに失敗します。その場合はPKG_CONFIG_PATHにカスタムライブラリのパスを追加します。
[root@localhost pkgconfig]# pwd
/usr/local/lib/pkgconfig
[root@localhost pkgconfig]# ll
合計 12
-rw-r--r-- 1 root root 341 12月 28 17:26 libpcre2-8.pc
-rw-r--r-- 1 root root 310 12月 28 17:26 libpcre2-posix.pc
-rw-r--r-- 1 root root 262 12月 28 20:02 libzip.pc
vi /etc/profile
追加
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile
libzip.pcの内容:
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
zipcmp=/usr/local/bin/zipcmp
Name: libzip
Description: ライブラリアーカイブのハンドリング用
Version: 1.3.2
Libs: -L${libdir} -lzip -lbz2 -lz
Cflags: -I${includedir}
複数のPKG_CONFIG_PATHのパスを追加できます:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/opt/dav1d/dist/lib64/pkgconfig:$PKG_CONFIG_PATH
それでも必要なライブラリファイルを見つけられない場合は、/etc/ld.so.confを編集します。
vi /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
ldconfigで設定ファイルを有効にします。
デフォルトでは、コンパイラは/libおよび/usr/libディレクトリのライブラリファイルのみを使用します。ソースコードパッケージからインストールした場合、--prefixを指定しないと通常/usr/localディレクトリにインストールされます。さらに、/etc/ld.so.confに/usr/local/libを追加しないと、インストールしたソースコードパッケージを使用する際に.soライブラリを見つけることができずエラーが発生します。
解決策は次の通りです:
- ソースコードでインストールするときに--prefixで/usr/libを指定します。これによりPKG_CONFIG_PATHの設定は必要ありません。
- /usr/local/libをファイル/etc/ld.so.confに追加します。この方法が最も効果的です。