Как исправить ошибку OpenSSL "libssl.so.10, которая необходима для lib64 / libldap.so, может конфликтовать с libssl.so.1.1" при компиляции PHP на CentOS 7? - PullRequest
1 голос
/ 15 марта 2019

Я начинаю с полностью чистой установки CentOS 7. Ничего не установлено.

Начиная, я yum install изменил эти об / мин:

  • сделать
  • mlocate
  • PCRE-разви
  • эмигрант-разви
  • EPEL-релиз
  • libxml2-разви
  • ням-Utils
  • Wget
  • ВИМ
  • рысь
  • libnghttp2-разви
  • libnghttp2
  • nghttp2
  • Libpng-разви
  • НКУ *
  • Perl-модуль-Load-Условный
  • Perl-жильный
  • локон-разви
  • OpenSSL-разви
  • MariaDB-разви
  • UnixODBC-разви
  • bzip2-разви
  • libjpeg-Devel * +1051 *
  • LibXpm-разви
  • FreeType-разви
  • ГМП-разви
  • libmcrypt-разви
  • HTTPD-разви

** РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ ** Добавлены следующие RPMS:

  • Сайрус-SASL
  • Сайрус-SASL-разви

Я скомпилировал OpenSSL 1.1.1, cURL 7.62.0 и HTTPD 2.4.38 из источника с соответствующими командами ниже:

OpenSSL

$ ./config \
  --prefix=/opt/openssl \
  -Wl,-rpath=/opt/openssl/bin \
  --openssldir=/opt/openssl \
  shared \
  zlib
$ make clean
$ make
$ make install
$ openssl version
OpenSSL 1.1.1  11 Sep 2018

Curl

$ env PKG_CONFIG_PATH=/opt/openssl/lib/pkgconfig ./configure \
  --prefix=/opt/curl \
  --with-ssl \
  LDFLAGS="-L/opt/openssl/lib -Wl,-rpath,/opt/openssl/lib"
  CPPFLAGS="-I/opt/openssl/include -Wl,-rpath,/opt/openssl/include"
make clean
make
make install
$ curl -V
curl 7.62.0 (x86_64-pc-linux-gnu) libcurl/7.62.0 OpenSSL/1.1.1 zlib/1.2.7 nghttp2/1.31.1
Release-Date: 2018-10-31
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy

HTTPD

$ env PKG_CONFIG_PATH=/opt/openssl/lib/pkgconfig ./configure \
  --prefix=/opt/httpd \
  --with-included-apr \
  --enable-so \
  --with-port=80 \
  --enable-http2 \
  --enable-ssl \
  --enable-ssl=shared \
  --with-ssl=/opt/openssl \
  --with-curl=/opt/curl \
  LDFLAG="-L/opt/openssl/lib -Wl,-rpath,/opt/openssl/lib -L/opt/curl/lib -Wl,-rpath,/opt/curl/lib" \
  CPPFLAGS="-I/opt/openssl/include -Wl,-rpath,/opt/openssl/include -I/opt/curl/include -Wl,-rpath,/opt/curl/include"
$ make clean
$ make
$ make install
$ httpd -v
Server version: Apache/2.4.38 (Unix)
Server built:   Mar 13 2019 15:14:01

До этого момента все работало нормально. Я могу загрузить страницу HTML через браузер на удаленной машине. (после открытия порта 80)

Здесь я начинаю сталкиваться с проблемами.

** РЕДАКТИРОВАНИЕ OPENLDAP (РАЗРЕШЕНО СОСТАВЛЕНИЕМ ОТКРЫТОГО LDAP) **

$ env PKG_CONFIG_PATH=/opt/openssl/lib/pkgconfig ./configure \
  --prefix=/opt/openldap \
  --with-tls \
  LDFLAGS="-L/opt/openssl/lib -Wl,-rpath,/opt/openssl/lib" \
  CPPFLAGS="-I/opt/openssl/include -Wl,-rpath,/opt/openssl/include"
$ make clean
$ make depend
$ make
$ make install

PHP

$ env PKG_CONFIG_PATH=/opt/openssl/lib/pkgconfig ./configure \
  --with-apxs2=/opt/httpd/bin/apxs \
  --prefix=/opt/php \
  --with-mysqli \
  --with-pdo-mysql \
  --enable-pdo \
  --enable-ftp \
  --with-zlib \
  --enable-zip \
  --enable-mbstring \
  --with-curl=/opt/curl \
  --with-openssl \
  --with-openssl-dir=/opt/openssl  \
  --enable-exif \
  --with-gd \
  --enable-shared \
  --enable-cgi \
  --with-ldap=/opt/openldap \
  LDFLAGS="-Wl,-rpath,/opt/openldap/lib -L/opt/openldap/lib -Wl,-rpath,/opt/openssl/lib -L/opt/openssl/lib" \
  CPPFLAGS="-Wl,-rpath,/opt/openldap/include -I/opt/openldap/include -Wl,-rpath,/opt/openssl/include -I/opt/openssl/include"
$ make clean
$ make
$ make install

Сделать ошибку

После запуска make clean;make У меня появляется эта ошибка:

  /usr/bin/ld: warning: libssl.so.10, needed by /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libldap.so, may conflict with libssl.so.1.1
  /usr/bin/ld: warning: libssl.so.10, needed by /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libldap.so, may conflict with libssl.so.1.1
  /usr/bin/ld: warning: libssl.so.10, needed by /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libldap.so, may conflict with libssl.so.1.1
  /usr/bin/ld: warning: libssl.so.10, needed by /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libldap.so, may conflict with libssl.so.1.1
  /usr/bin/ld: ext/openssl/.libs/xp_ssl.o: undefined reference to symbol 'SSLv3_server_method@@libssl.so.10'
  //usr/lib64/libssl.so.10: error adding symbols: DSO missing from command line
  collect2: error: ld returned 1 exit status
  make: *** [sapi/cli/php] Error 1

Создать журнал испытаний

Команда make test возвращает те же ошибки.

/usr/bin/ld: warning: libssl.so.10, needed by /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libldap.so, may conflict with libssl.so.1.1
/usr/bin/ld: warning: libssl.so.10, needed by /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libldap.so, may conflict with libssl.so.1.1
/usr/bin/ld: warning: libssl.so.10, needed by /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libldap.so, may conflict with libssl.so.1.1
/usr/bin/ld: warning: libssl.so.10, needed by /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libldap.so, may conflict with libssl.so.1.1
/usr/bin/ld: ext/openssl/.libs/xp_ssl.o: undefined reference to symbol 'SSLv3_server_method@@libssl.so.10'
//usr/lib64/libssl.so.10: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1

1 Ответ

2 голосов
/ 15 марта 2019

Чтобы остановить это предупреждение, используйте системную SSL-библиотеку и не компилируйте ее самостоятельно.

Или вы должны сами собрать все библиотеки, которые ссылаются на OpenSSL (в вашем случае libldap)

...