2014-11-23 2 views
5

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

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 

Процесс конфигурирования, кажется, работает хорошо, но когда я запускаю сделать, я получаю это:

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 
... 

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

ответ

2

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 
1

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

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

/opt/install2015/openssl-1.0.1p/ 

2) установить ENV вар:

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 vars был установлен, чтобы заставить его работать.

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

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

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

+0

PATH должен быть установлен как: PATH =/opt/install2015/openssl-1.0.1p/bin: $ PATH –

Смежные вопросы