2014-11-23 9 views
5

Zainstalowałem OpenSSL 1.0.1j na /usr/local/ssl, a teraz próbuję skompilować PHP 5.5.19 przy użyciu tej wersji OpenSSL. Oto moja Procedura konfigurowania ...Jak skompilować PHP 5.5.19 z OpenSSL 1.0.1 na 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 

Proces configure wydaje się działać prawidłowo, ale gdy uruchamiam zrobić, otrzymuję to:

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 

Jeśli uruchomić te same opcje konfiguracyjne, ale punkt OpenSSL do wersji systemu/usr

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

Następnie zrób działa bez problemu i PHP instaluje w porządku, ale ze starą wersją OpenSSL. Jak mogę uzyskać dostęp do mojej nowszej wersji OpenSSL?

Odpowiedz

2

Makefile ma linię z EXTRA_LIBS, coś takiego:

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

usunąć wszystkie wystąpienia -lssl i -lcrypto i dodać pełną ścieżkę do libssl.dylib i libcrypto.dylib

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

dwie rzeczy, po pierwsze wszystko ze wszystkich, jeśli używasz php z apache, prawdopodobnie ważniejsze jest skompilowanie i instalacja apr-util z skonfigurowanym openssl. Ale jeśli chcesz po prostu mieć PHP do pracy z zwyczaj budowania OpenSSL, można to zrobić z następujących kroków:

1) Załóżmy, trzeba budować i zainstalowaniu OpenSSL w:

/opt/install2015/openssl-1.0.1p/ 

2) ustaw swój 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 

Mam dwa systemy, jeden z nich działa tylko z zestawem PATH env var. W drugim starszym systemie muszę mieć również zestaw vw LD_x, aby uruchomić go.

3) Konfiguracja PHP może być tylko:

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

Następnie uruchom skrypt configure, make i make install.

+0

ŚCIEŻKA powinna być ustawiona jako: PATH =/opt/install2015/openssl-1.0.1p/bin: $ PATH –