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!