[PHP-INSTALL] How to resolve inconsistent linking of path-specified openssl libs into php bin and extenstions ?
PGNet Dev <[email protected]> Mon, 6 Mar 2017 12:54:29 -0800
| Newsgroups | gmane.comp.php.install |
|---|---|
| Message-ID | <[email protected]> |
I'm working on php 7-1 with specific openssl versions/install paths. When building with openssl ext, linking openssl 10 libs/headers from a local, non-system path, and rpath'ing enabled export EXTRA_LDFLAGS="-L/usr/local/openssl10/lib64" export EXTRA_LIBS="-lssl -lscrypto" CPPFLAGS="-I/usr/local/openssl10/include -I/usr/local/include -I/usr/include" pkg-config openssl --libs --cflags -I/usr/local/openssl10/include -L/usr/local/openssl10/lib64 -lssl -lcrypto ./configure \ --enable-rpath \ --enable-shared=yes --enable-static=no \ --with-openssl=shared --with-openssl-dir=/usr/local/openssl10 \ ... make make install correctly links the openssl.so to spec'd openssl libs ldd openssl.so linux-vdso.so.1 (0x00007fffdedef000) !! libssl.so.1.0.0 => /usr/local/openssl10/lib64/libssl.so.1.0.0 (0x00007fdae69f5000) !! libcrypto.so.1.0.0 => /usr/local/openssl10/lib64/libcrypto.so.1.0.0 (0x00007fdae6565000) libc.so.6 => /lib64/libc.so.6 (0x00007fdae6162000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fdae5f5e000) /lib64/ld-linux-x86-64.so.2 (0x0000556f88705000) but php -i returns a mismatch ... OpenSSL support => enabled OpenSSL Library Version => OpenSSL 1.0.2j-fips 26 Sep 2016 OpenSSL Header Version => OpenSSL 1.0.2k 26 Jan 2017 Openssl default config => /etc/ssl/openssl.cnf Directive => Local Value => Master Value openssl.cafile => no value => no value openssl.capath => /etc/ssl/certs => /etc/ssl/certs ... checking ldd `which php` linux-vdso.so.1 (0x00007ffe796a7000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fe781930000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe781718000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fe78132f000) libpcre.so.1 => /usr/local/lib64/libpcre.so.1 (0x00007fe7810b5000) librt.so.1 => /lib64/librt.so.1 (0x00007fe780eac000) libm.so.6 => /lib64/libm.so.6 (0x00007fe780baf000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fe7809ab000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fe780792000) libz.so.1 => /lib64/libz.so.1 (0x00007fe78057b000) liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x00007fe780352000) libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fe77ffe6000) !! libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007fe77fd7a000) !! libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007fe77f920000) libc.so.6 => /lib64/libc.so.6 (0x00007fe77f57c000) /lib64/ld-linux-x86-64.so.2 (0x0000560dbbe7d000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fe77f365000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe77f148000) the php binary itself is incorrectly linked to system/distro, not specified libs. If I instead set export LDFLAGS="-L/usr/local/openssl10/lib64" export LIBS="-lssl -lscrypto" then (1) the mismatch persists AND (2) EVERY ext.so built is linked to incorrect libs ldd <any_ext>.so ... libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007f29accae000) libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007f29ac854000) ... What combination of setting/flags are required to (1) correctly link/rpath SPECIFIED openssl libs (2) ensure matched headers & libs are detected & reported (3) link ssl/crypto libs ONLY to bins/libs that *require* them ?