PHP 7.4とPHP 8.0のインストールとpkg-configの詳細

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ライブラリを見つけることができずエラーが発生します。

解決策は次の通りです:

  1. ソースコードでインストールするときに--prefixで/usr/libを指定します。これによりPKG_CONFIG_PATHの設定は必要ありません。
  2. /usr/local/libをファイル/etc/ld.so.confに追加します。この方法が最も効果的です。

タグ: PHP pkg-config インストール コンパイル ライブラリパス

6月9日 16:48 投稿