2014-11-23 10 views
5

Ich habe OpenSSL 1.0.1j zu /usr/local/ssl installiert und jetzt versuche ich PHP 5.5.19 mit dieser Version von OpenSSL zu kompilieren. Hier ist mein Verfahren zu konfigurieren ...Wie kompiliere ich PHP 5.5.19 mit OpenSSL 1.0.1 auf 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 

Das configure Prozess scheint gut zu funktionieren, aber wenn ich laufen zu lassen, erhalte ich diese:

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 

Wenn ich die gleichen Konfigurationsoptionen laufen, aber Punkt openssl zur Systemversion/usr

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

Dann läuft machen, ohne ein Problem und pHP installiert in Ordnung, aber mit einer alten Version von OpenSSL. Wie kann ich meine neuere Version von OpenSSL verwenden?

Antwort

2

Das Makefile hat eine Linie mit EXTRA_LIBS, so etwas wie:

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

Entfernen Sie alle Vorkommen von -lssl und -lcrypto und fügen Sie den vollständigen Pfad zu libssl.dylib und libcrypto.dylib

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

Zwei Dinge, zuerst alle von allen, wenn Sie PHP mit Apache verwenden, ist es wahrscheinlich wichtiger zu kompilieren und zu installieren apr-util mit openssl konfiguriert. Aber wenn Sie nur php haben möchten mit Ihrem eigenen Build openssl zu arbeiten, können Sie es mit den folgenden Schritten tun:

1) Angenommen, Sie haben bauen und installiert Ihre OpenSSL in:

/opt/install2015/openssl-1.0.1p/ 

2) setze dein 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 

Ich habe zwei Systeme, eines davon funktioniert nur mit dem PATH env var set. Auf dem anderen älteren System müssen die LD_x-Variablen ebenfalls gesetzt sein, damit es funktioniert.

3) Ihre PHP-Konfiguration kann nur sein:

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

Danach wird das configure-Skript ausführen, stellen und installieren lassen.

+0

PATH sollte wie folgt festgelegt werden: PATH =/opt/install2015/openssl-1.0.1p/bin: $ PATH –