発生している問題
AWS EC2 の RedHat 7.5 で PHP8.1 をソースからビルドする作業をしています。
各種拡張モジュールを組み込む必要があるのですが、まず最初の bzip2 の組み込みがうまく行っていません。
configure で --with-bz2 を設定していますが、bz2.so ファイルが作成されません。
経緯
これまで PHP は yum 等でのインストールに頼っていましたが、セキュリティアップデートを適用するため、最新版のインストールを行っています。
現在作業しているのは AWS で新しく作成した EC2 インスタンスで、apache のインストールを行いましたが、その他はビルド関連のツールをインストールしただけでほぼ初期状態です。
大まかにはコンパイル、ビルドの流れは把握できていますが、個別の configure、make の詳細な動作については調べながらやっています。
作業内容
bzip2 は bzip2-1.0.8 をインストール済み
cd /usr/local/src/bzip2-1.0.8 make -f Makefile-libbz2_so make make install
PHP8.1 は 下記の手順でビルド(最小限のオプションで再現)
cd /usr/local/src/php-8.1.11 ./configure --with-bz2 make make install
エラー内容
# /usr/local/bin/php -v PHP Warning: PHP Startup: Unable to load dynamic library 'bz2' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20210902/bz2 (/usr/local/lib/php/extensions/no-debug-non-zts-20210902/bz2: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20210902/bz2.so (/usr/local/lib/php/extensions/no-debug-non-zts-20210902/bz2.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Warning: PHP Startup: Unable to load dynamic library 'bz2' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20210902/bz2 (/usr/local/lib/php/extensions/no-debug-non-zts-20210902/bz2: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20210902/bz2.so (/usr/local/lib/php/extensions/no-debug-non-zts-20210902/bz2.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP 8.1.11 (cli) (built: Nov 10 2022 10:05:09) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.11, Copyright (c) Zend Technologies
ここまでの確認内容
extension フォルダに bz2.so が出力されていない。
#ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20210902/ total 9664 -rwxr-xr-x. 1 root root 9893448 Nov 10 10:06 opcache.so
make install で php 作業フォルダの modules フォルダからコピーされていると思われるが、ここにもない。
# ls -l modules total 9664 -rwxr-xr-x. 1 root root 9893448 Nov 10 09:57 opcache.so
ビルド時に作成される bz2.so も見当たらない。
# ls -l ext/bz2/.libs total 196 -rw-r--r--. 1 root root 77800 Nov 10 09:58 bz2_filter.o -rw-r--r--. 1 root root 120496 Nov 10 09:58 bz2.o
Makefile 中、bz2 に関連しそうな部分
----(略)---- CONFIGURE_COMMAND = './configure' '--with-bz2' 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' CONFIGURE_OPTIONS = '--with-bz2' 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' ----(略)---- BZ2_SHARED_LIBADD = ----(略)---- PHP_GLOBAL_OBJS = --(略)-- ext/bz2/bz2.lo ext/bz2/bz2_filter.lo --(略)-- ----(略)---- EXTRA_LIBS = -lcrypt -lresolv -lcrypt -lrt -lbz2 -lutil -lrt -lm -ldl -lxml2 -lsqlite3 -lxml2 -lsqlite3 -lxml2 -lxml2 -lxml2 -lxml2 -lcrypt ----(略)---- PHP_PHARCMD_EXECUTABLE = ` \ if test -x "$(top_builddir)/$(SAPI_CLI_PATH)"; then \ $(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \ if test "x$(PHP_MODULES)" != "x"; then \ $(top_srcdir)/build/shtool echo -n -- " -d extension_dir=$(top_builddir)/modules"; \ for i in bz2 zlib phar; do \ if test -f "$(top_builddir)/modules/$$i.la"; then \ . $(top_builddir)/modules/$$i.la; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \ fi; \ done; \ fi; \ else \ $(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; \ fi;` ----(略)---- -include ext/bz2/bz2.dep ext/bz2/bz2.lo: /usr/local/src/php-8.1.11/ext/bz2/bz2.c $(LIBTOOL) --mode=compile $(CC) -Iext/bz2/ -I/usr/local/src/php-8.1.11/ext/bz2/ $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) -c /usr/local/src/php-8.1.11/ext/bz2/bz2.c -o ext/bz2/bz2.lo -MMD -MF ext/bz2/bz2.dep -MT ext/bz2/bz2.lo -include ext/bz2/bz2_filter.dep ext/bz2/bz2_filter.lo: /usr/local/src/php-8.1.11/ext/bz2/bz2_filter.c $(LIBTOOL) --mode=compile $(CC) -Iext/bz2/ -I/usr/local/src/php-8.1.11/ext/bz2/ $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) -c /usr/local/src/php-8.1.11/ext/bz2/bz2_filter.c -o ext/bz2/bz2_filter.lo -MMD -MF ext/bz2/bz2_filter.dep -MT ext/bz2/bz2_filter.lo ----(略)----
同じく Makefile 中、出力されている opcache.so については、下記の行があるが、bz2 の該当行は見当たらず。
ext/opcache/opcache.la: $(shared_objects_opcache) $(OPCACHE_SHARED_DEPENDENCIES) $(LIBTOOL) --mode=link $(CC) -shared $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_opcache) $(OPCACHE_SHARED_LIBADD)
configure での処理に原因があると考えて、現在 configure ファイルを解析中。
なお、configure 実行時に下記の出力があるので、bz2 の認識に問題はないと考えている。
checking for BZip2 support... yes checking for BZip2 in default path... found in /usr/local checking for BZ2_bzerror in -lbz2... yes
何か見落としている点、必要なオプションなどがあればご指摘いただければ助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。