すごい根本的な事なのですが、教えて下さい。
現在、PHP7.3.5をソースからのインストールを試みています。
依存しているLDAP、SSH、SNMP、MySQLに関するライブラリも自前でコンパイルしてインストールしています。
configureは以下のように実行しました。
./configure
--prefix=/var/home/ap/php
--enable-fpm
--with-config-file-path=/var/home/ap/php/etc
--with-config-file-scan-dir=/var/home/ap/php/etc
--enable-libgcc
--with-openssl=/var/home/lib/openssl
--with-zlib=/var/home/lib/zlib
--with-zlib-dir=/var/home/lib/zlib
--with-bz2
--enable-calendar
--with-curl
--enable-dba=shared
--enable-exif
--with-gd
--with-jpeg-dir=/usr
--with-png-dir=/usr
--with-xpm-dir=/usr
--with-freetype-dir=/usr
--enable-gd-jis-conv
--with-gettext
--with-ldap=/var/home/lib/openldap
--enable-mbstring
--with-mysqli=/var/home/ap/mysql/bin/mysql_config
--enable-pcntl
--with-pdo-mysql=/var/home/ap/mysql/
--with-zlib-dir=/var/home/lib/zlib
--with-readline
--with-snmp=/var/home/lib/net-snmp
--with-openssl-dir=/var/home/lib/openssl
--enable-soap
--enable-sockets
--with-xmlrpc
--with-xsl
--enable-zip
--with-zlib-dir=/var/home/lib/zlib
--with-libzip=/var/home/lib/libzip
--with-tsrm-pthreads
--enable-shared
そして、Makefileを以下のように修正しました。
EXTRA_LDFLAGS = -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/var/home/lib/openssl/lib -L/var/home/lib/zlib/lib -L/var/home/lib/openldap/lib -L/var/home/ap/mysql/lib -L/var/home/ap/mysql//lib -L/var/home/lib/net-snmp/lib -L/usr/lib64 -L/var/home/lib/libzip/lib
↓
EXTRA_LDFLAGS = -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/var/home/lib/openssl/lib -L/var/home/lib/libssh2/lib -L/var/home/lib/zlib/lib -L/var/home/lib/libzip/lib -L/var/home/lib/openldap/lib -L/var/home/ap/mysql/lib -L/var/home/lib/net-snmp/lib -L/usr/lib64
EXTRA_LDFLAGS_PROGRAM = -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/var/home/lib/openssl/lib -L/var/home/lib/zlib/lib -L/var/home/lib/openldap/lib -L/var/home/ap/mysql/lib -L/var/home/ap/mysql//lib -L/var/home/lib/net-snmp/lib -L/usr/lib64 -L/var/home/lib/libzip/lib
↓
EXTRA_LDFLAGS_PROGRAM = -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/var/home/lib/openssl/lib -L/var/home/lib/libssh2/lib -L/var/home/lib/zlib/lib -L/var/home/lib/libzip/lib -L/var/home/lib/openldap/lib -L/var/home/ap/mysql/lib -L/var/home/lib/net-snmp/lib -L/usr/lib64
INCLUDES = -I/var/home/src/php-7.3.5/ext/date/lib -I/usr/include/libxml2 -I/var/home/lib/openssl/include -I/var/home/lib/zlib/include -I/usr/X11 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/var/home/lib/openldap/include -I/var/home/src/php-7.3.5/ext/mbstring/oniguruma -I/var/home/src/php-7.3.5/ext/mbstring/libmbfl -I/var/home/src/php-7.3.5/ext/mbstring/libmbfl/mbfl -I/var/home/ap/mysql/include -I/var/home/ap/mysql//include -I/var/home/src/php-7.3.5/ext/sqlite3/libsqlite -I/var/home/lib/net-snmp/include -I$(top_builddir)/TSRM -I$(top_builddir)/Zend
↓
INCLUDES = -I/var/home/src/php-7.3.5/ext/date/lib -I/usr/include/libxml2 -I/var/home/lib/openssl/include -I/var/home/lib/libssh2/include -I/var/home/lib/zlib/include -I/var/home/lib/libzip/include -I/usr/X11 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/var/home/lib/openldap/include -I/var/home/src/php-7.3.5/ext/mbstring/oniguruma -I/var/home/src/php-7.3.5/ext/mbstring/libmbfl -I/var/home/src/php-7.3.5/ext/mbstring/libmbfl/mbfl -I/var/home/ap/mysql/include -I/var/home/ap/mysql//include -I/var/home/src/php-7.3.5/ext/sqlite3/libsqlite -I/var/home/lib/net-snmp/include -I$(top_builddir)/TSRM -I$(top_builddir)/Zend
NATIVE_RPATHS = -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -Wl,-rpath,/var/home/lib/openssl/lib -Wl,-rpath,/var/home/lib/zlib/lib -Wl,-rpath,/var/home/lib/openldap/lib -Wl,-rpath,/var/home/ap/mysql/lib -Wl,-rpath,/var/home/ap/mysql//lib -Wl,-rpath,/var/home/lib/net-snmp/lib -Wl,-rpath,/usr/lib64 -Wl,-rpath,/var/home/lib/libzip/lib
↓
NATIVE_RPATHS = -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -Wl,-rpath,/var/home/lib/openssl/lib -Wl,-rpath,/var/home/lib/libssh2/lib -Wl,-rpath,/var/home/lib/zlib/lib -Wl,-rpath,/var/home/lib/libzip/lib -Wl,-rpath,/var/home/lib/openldap/lib -Wl,-rpath,/var/home/ap/mysql/lib -Wl,-rpath,/var/home/lib/net-snmp/lib -Wl,-rpath,/usr/lib64
PHP_LDFLAGS = -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/var/home/lib/openssl/lib -L/var/home/lib/zlib/lib -L/var/home/lib/openldap/lib -L/var/home/ap/mysql/lib -L/var/home/ap/mysql//lib -L/var/home/lib/net-snmp/lib -L/usr/lib64 -L/var/home/lib/libzip/lib
↓
PHP_LDFLAGS = -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/var/home/lib/openssl/lib -L/var/home/lib/libssh2/lib -L/var/home/lib/zlib/lib -L/var/home/lib/libzip/lib -L/var/home/lib/openldap/lib -L/var/home/ap/mysql/lib -L/var/home/lib/net-snmp/lib -L/usr/lib64
PHP_RPATHS = -R /usr/lib/gcc/x86_64-redhat-linux/4.8.5 -R /var/home/lib/openssl/lib -R /var/home/lib/zlib/lib -R /var/home/lib/openldap/lib -R /var/home/ap/mysql/lib -R /var/home/ap/mysql//lib -R /var/home/lib/net-snmp/lib -R /usr/lib64 -R /var/home/lib/libzip/lib
↓
PHP_RPATHS = -R /usr/lib/gcc/x86_64-redhat-linux/4.8.5 -R /var/home/lib/openssl/lib -R /var/home/lib/libssh2/lib -R /var/home/lib/zlib/lib -R /var/home/lib/libzip/lib -R /var/home/lib/openldap/lib -R /var/home/ap/mysql/lib -R /var/home/lib/net-snmp/lib -R /usr/lib64
コンパイルすると問題なくバイナリが生成されます。
そして、readelf --dynamic phpでロードする共有オブジェクトの情報を表示すると以下の通り表示されます。
Dynamic section at offset 0xde4880 contains 53 entries:
タグ タイプ 名前/値
0x0000000000000001 (NEEDED) 共有ライブラリ: [libcrypt.so.1]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libzip.so.5]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libz.so.1]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libexslt.so.0]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libreadline.so.6]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libncurses.so.5]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libtinfo.so.5]
0x0000000000000001 (NEEDED) 共有ライブラリ: [librt.so.1]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libX11.so.6]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libXpm.so.4]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libpng15.so.15]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libjpeg.so.62]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libbz2.so.1]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libcrypto.so.1.0.0]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libm.so.6]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libdl.so.2]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libnsl.so.1]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libxml2.so.2]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libcurl.so.4]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libfreetype.so.6]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libmysqlclient.so.20]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libxslt.so.1]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libldap-2.4.so.2]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libsasl2.so.3]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libssl.so.1.0.0]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libnetsnmp.so.30]
0x0000000000000001 (NEEDED) 共有ライブラリ: [liblber-2.4.so.2]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libresolv.so.2]
0x0000000000000001 (NEEDED) 共有ライブラリ: [libc.so.6]
0x000000000000000f (RPATH) ライブラリの rpath: [/var/home/lib/openldap/lib:/var/home/lib/net-snmp/lib:/usr/lib/gcc/x86_64-redhat-linux/4.8.5:/var/home/lib/openssl/lib:/var/home/lib/libssh2/lib:/var/home/lib/zlib/lib:/var/home/lib/libzip/lib:/var/home/ap/mysql/lib:/usr/lib64]
0x000000000000000c (INIT) 0x433f20
0x000000000000000d (FINI) 0x8e63a0
0x0000000000000019 (INIT_ARRAY) 0x1328788
0x000000000000001b (INIT_ARRAYSZ) 8 (バイト)
0x000000000000001a (FINI_ARRAY) 0x1328790
0x000000000000001c (FINI_ARRAYSZ) 8 (バイト)
0x000000006ffffef5 (GNU_HASH) 0x400298
0x0000000000000005 (STRTAB) 0x419190
0x0000000000000006 (SYMTAB) 0x404b80
0x000000000000000a (STRSZ) 68352 (バイト)
0x000000000000000b (SYMENT) 24 (バイト)
0x0000000000000015 (DEBUG) 0x0
0x0000000000000003 (PLTGOT) 0x13e5000
0x0000000000000002 (PLTRELSZ) 31368 (バイト)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x42c498
0x0000000000000007 (RELA) 0x42ba90
0x0000000000000008 (RELASZ) 2568 (バイト)
0x0000000000000009 (RELAENT) 24 (バイト)
0x000000006ffffffe (VERNEED) 0x42b7c0
0x000000006fffffff (VERNEEDNUM) 10
0x000000006ffffff0 (VERSYM) 0x429c90
0x0000000000000000 (NULL) 0x0
libldap-2.4.so.2は、/var/home/lib/openldap/lib(自分でインストールした方)と/usr/lib64(OSに元々入っていた方)にあります。php実行においては、/var/home/lib/openldap/libが先に検索されて、/var/home/lib/openldap/libにあるlibldap-2.4.so.2がロードされるのでしょうか?
ランタイム環境の質問で、どちらかというとインフラ系の質問になるとは思いますが、ご回答頂ければ幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー