macos — Как скомпилировать PHP 5.5.19 с OpenSSL 1.0.1 на OS X

Я установил OpenSSL 1.0.1j для /usr/local/ssl и теперь я пытаюсь скомпилировать PHP 5.5.19, используя эту версию OpenSSL. Вот моя процедура для настройки …

export CFLAGS="-arch x86_64"export CXXFLAGS="-arch x86_64"export LDFLAGS="-L/usr/local/ssl/lib"export CPPFLAGS="-I/usr/local/ssl/include"./configure \
--prefix=/usr/local/php5 \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--sysconfdir=/etc \
--with-config-file-path=/etc \
--with-zlib \
--with-zlib-dir=/usr \
--with-apxs2=/usr/sbin/apxs \
--with-openssl=/usr/local/ssl \
--without-iconv \
--enable-cli \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-mbregex \
--enable-sockets \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-gd \
--with-jpeg-dir=/usr/local/lib \
--with-png-dir=/usr/X11R6 \
--with-freetype-dir=/usr/X11R6 \
--with-xpm-dir=/usr/X11R6 \
--with-mcrypt \
--with-curl

Процесс конфигурирования работает нормально, но когда я запускаю make, я получаю следующее:

Undefined symbols for architecture x86_64:
"_PKCS5_PBKDF2_HMAC", referenced from:
_zif_openssl_pbkdf2 in openssl.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libs/libphp5.bundle] Error 1

Если я запускаю те же параметры настройки, но указываю openssl на системную версию / usr

...
--with-openssl=/usr
...

Затем make запускается без проблем и php устанавливается нормально, но со старой версией OpenSSL. Как я могу заставить его использовать мою более новую версию OpenSSL?

5

Решение

Makefile имеет строку с EXTRA_LIBS, что-то вроде:

EXTRA_LIBS = -lresolv -lmcrypt -lltdl -liconv-lm -lxml2 -lcurl  -lssl -lcrypto

Удалить все вхождения -lssl а также -lcrypto и добавьте полный путь к libssl.dylib а также libcrypto.dylib

EXTRA_LIBS = -lresolv -lmcrypt /usr/local/ssl/lib/libssl.dylib /usr/local/ssl/lib/libcrypto.dylib -lltdl -liconv-lm -lxml2 -lcurl
2

Другие решения

Две вещи, прежде всего, если вы используете php с apache, вероятно, более важно скомпилировать и установить apr-util с настроенным openssl. Но если вы просто хотите, чтобы php работал с вашей собственной сборкой openssl, вы можете сделать это с помощью следующих шагов:

1) Предположим, вы собрали и установили свой openssl в:

/opt/install2015/openssl-1.0.1p/

2) установите env var:

LD_LIBRARY_PATH=/opt/install2015/openssl-1.0.1p/lib/
PATH=/opt/install2015/openssl-1.0.1p/bin
LD_RUN_PATH=/opt/install2015/openssl-1.0.1p/lib

У меня есть две системы, одна из которых работает только с набором переменных PATH. В другой более старой системе мне нужно установить переменные LD_x, чтобы заставить его работать.

3) Ваша конфигурация php может быть просто:

./configure \
--with-openssl \
...

После этого запустите скрипт настройки, сделайте и сделайте установку.

1

По вопросам рекламы [email protected]