2014-11-23 17 views
5

Ho installato OpenSSL 1.0.1j su /usr/local/ssl e ora sto cercando di compilare PHP 5.5.19 usando questa versione di OpenSSL. Ecco la mia procedura per configurare ...Come compilare PHP 5.5.19 con OpenSSL 1.0.1 su 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 

Il processo di configurazione sembra funzionare bene, ma quando eseguo make ottengo questo:

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 

Se corro le stesse opzioni di configurazione, ma punto OpenSSL per la versione del sistema/usr

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

Poi fanno funziona senza un problema e php installa bene, ma con una vecchia versione di OpenSSL. Come posso usare la mia versione più recente di OpenSSL?

risposta

2

Il Makefile ha una linea con EXTRA_LIBS, qualcosa di simile a:

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

rimuovere tutte le occorrenze di -lssl e -lcrypto e aggiungere il percorso completo libssl.dylib e libcrypto.dylib

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

due cose, primo all di tutto, se si utilizza php con apache, è probabilmente più importante compilare e installare apr-util con openssl configurato. Ma se si desidera solo avere PHP per lavorare con la costruzione del OpenSSL personalizzato, è possibile farlo con le seguenti operazioni:

1) Si supponga di avere costruire e installato l'openssl in:

/opt/install2015/openssl-1.0.1p/ 

2) set your 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 

Ho due sistemi, uno dei quali funziona solo con il set di parametri env PATH. Sull'altro sistema più vecchio, ho bisogno di avere anche il vars LD_x impostato per farlo funzionare.

3) la configurazione di PHP può essere solo:

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

Dopo di che, eseguire lo script di configurazione, make e make install.

+0

PATH deve essere impostato come: PATH =/opt/install2015/openssl-1.0.1p/bin: $ PATH –