Compilando o PHP 5.3.29 com o OpenSSL falha

1

estamos precisando de uma instalação PHP5.3 em nosso servidor Ubuntu 16.04 para um aplicativo legado de terceiros que estamos prestes a substituir, mas ainda precisamos de algum tempo por aí.

Portanto, eu compilei o PHP5.3.29 com o FPM para fazê-lo funcionar com a nossa Pilha Nginx. No entanto, estou lutando para compilar o OpenSSL no PHP. Então aqui está o que eu fiz até agora:

Usando a instalação do sistema do OpenSSL (v 1.0.1j)

Tentar compilar o PHP com --with-openssl falha com o seguinte erro ao executar o make:

/usr/bin/ld: ext/openssl/openssl.o: undefined reference to symbol 'SSL_get_verify_result@@OPENSSL_1.0.0'
//lib/x86_64-linux-gnu/libssl.so.1.0.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:267: recipe for target 'sapi/fpm/php-fpm' failed

Então, procurei na Web para encontrar uma correção para esse erro, mas não obtive sucesso com os que consegui encontrar. No entanto, um post que me deparei mencionou que, usando uma versão mais antiga do OpenSSL, o problema poderia ser contornado. Então é isso que eu tentei.

Usando a versão antiga auto-compilada do OpenSSL (v 0.9.8w)

Eu compilei o OpenSSL com o sinalizador --prefix=/opt/openssl para garantir que ele não interferisse na instalação dos sistemas do OpenSSL. Depois disso, tentei compilar o PHP novamente usando --with-openssl=/opt/openssl e passei suavemente.

No entanto, depois de executar alguns testes usando o aplicativo que exigia PHP 5.3, eu rapidamente comecei a ver o FPM-Child que estava atendendo o meu pedido de segmentação ao usar cURL-Requests com URLs https. Então depurei o filho defeituoso e consegui rastrear a causa até o OpenSSL. OK - o que fazer agora?

Compilando o PHP sem o OpenSSL

Então eu decidi omitir completamente a extensão OpenSSL e realmente tive sucesso em ambas as compilações (não é surpresa aqui) e também solicitei URLs https através de curl usando a instalação PHP que acabei de compilar. Tudo bem eu pensei, mas não foi (nenhuma surpresa também): Depois de executar o aplicativo por um tempo, descobriu-se que faz uso extensivo de file_get_contents() chamadas em combinação com URLs https. Todos estes falhar porque PHP está faltando suporte a fluxo https por causa da falta da extensão OpenSSL.

Então, aqui não estou sabendo o que fazer a seguir e espero que você me dê um empurrãozinho na direção certa.

Apenas FYI, aqui está a configuração que usei para compilação (com valores variáveis para o parâmetro --with-openssl):

./configure \
--prefix=/usr/local/php5.3 \
--with-config-file-path=/etc/php/5.3 \
--with-mysql \
--with-mysqli=mysqlnd \
--with-jpeg-dir=/usr/lib/x86_64-linux-gnu/ \
--with-png-dir=/usr \
--with-gd \
--enable-soap \
--enable-bcmath \
--enable-mbstring \
--with-curl \
--with-openssl=/opt/openssl
--with-zlib=/usr \
--enable-ftp \
--enable-zip \
--with-mcrypt \
--enable-pdo --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd \
--enable-fpm

Obrigado um mil!

    
por Moritz Mädler 03.02.2017 / 08:19

1 resposta

0

Aqui estão minhas anotações de quando fiz isso:

Passo 1 - build php - para ser executado onde você não phred php (talvez [homedir] / software / php5329), então ele pode instalar em [homedir] / usr / php5329

· Configuração de compilação de compilação do PHP - ./configure --prefix=[homedir]/usr/php5329 --with-snmp --with-mysql=/usr/phab/mysql/bin --with-libdir=lib64  --with-pdo-mysql=/usr/phab/mysql/ --with-pear=[homedir]/usr/php5329 --with-config-file-path=[homedir]/usr/php5329; make clean ; make -j 32 ; make install 

Step 2 - construa o libssh - para ser executado onde você descompactou o libssh-1.7.0 (talvez [homedir] /software/libssh-1.7.0), para que ele possa ser instalado em [ homedir] / usr / libssh2

· Libssh2 - ./configure --prefix=[homedir]/usr/libssh2-1.7.0 ; make clean ; make -j 50 ; make install 

Step 3 - configura a ponte php-ssl cujas fontes estão em [homedir] /software/ssh-0.12

· Ponte PHP-SSL - phpize534; ./configure --with-ssh2=[homedir]/usr/libssh2-1.7.0 --with-php-config=[path to new php-config]/php-config ; make clean ; make -j 50 ; make install

    
por 28.03.2018 / 18:19