Como resolver `configure: error: Não foi possível encontrar o OpenSSL's <evp.h>`?

33

Estou tentando recompilar o PHP, mas ./configure falha em:

configure: error: Cannot find OpenSSL's <evp.h>

Eu tenho o LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL instalado.

--with-openssl=/usr/include/openssl

quando tento com

--with-openssl

diga-me:

configure: error: Não foi possível encontrar as bibliotecas do OpenSSL

Onde diabos estão o problema?

PS Php é 5.2.5, SO é Ubuntu

CappY
fonte

Respostas:

47

O mesmo problema ocorreu Ubuntu 12.04.1 LTSe foi resolvido com a emissão de:

sudo apt-get install libcurl4-openssl-dev pkg-config

antila
fonte
Olá :) Esqueci como resolver o meu problema. :) Foi a meio ano atrás.
CappY
2
Qual é a libcurl4-openssl-devdiferença libssl-dev?
Gherman
16

Para compilar o php-5.3 no Debian wheezy, você precisa do seguinte para corrigir este erro.

apt-get install libssl-dev libsslcommon2-dev

Então você precisa configurar com o seguinte

./configure --with-libdir=/lib/x86_64-linux-gnu ...
JinnKo
fonte
2
1+, me ajudou muito. Eu também tive que adicionar --with-php-config /usr/local/src/php-x.x.x/scripts/php_config. Eu escrevi um tutorial sobre como compilar o PHP com extensões.
Daniel W.
funciona, mas falha em todos os casos de teste.
Rafael
Trabalha para compilação manual do PHP5.2 no Ubuntu 14.04 com a diretiva "--with-openssl". Muito obrigado.
1
12

Supondo que você já tenha as bibliotecas OpenSSL e os arquivos de cabeçalho (nos sistemas rpm, os últimos estão no pacote xxxx-devel) ...

O problema parece surgir de como configureresolve dependências distribuídas pelo sistema de arquivos. Para compilar o código, o compilador precisa saber onde estão os cabeçalhos. Para vincular o código, o vinculador precisa saber onde estão as bibliotecas.

[colin@host]$ configure .... --with-openssl-dir=/usr/include/openssl ....
...
checking OpenSSL dir for FTP... /usr/include/openssl
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>

[colin@host]$ find /usr/include -name evp.h
/usr/include/openssl/evp.h

O diretório include possui o arquivo include, mas o pkg-config falha porque a biblioteca não está em / usr / include / openssl, está em / usr / lib

Executando configure novamente com / usr como o diretório:

configure .... --with-openssl-dir=/usr ....
...
checking OpenSSL dir for FTP... /usr
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6
checking for CRYPTO_free in -lcrypto... yes
...

O caminho passado como argumento é pesquisado para encontrar os recursos relevantes.

symcbean
fonte
Isso funcionou para mim. Esta é uma boa solução.
Shawn Welch
Esta foi a solução no debian wheezy + php 5.3.10! Obrigado!!!!
holms 23/03
@holms: agora é uma versão bastante antiga do php. Especialmente se você usar pacotes compilados a partir da fonte em vez de pacotes gerenciados, use uma versão recente.
23417 sycbean
Esta foi a solução para mim construir php-7.1.12sobre Debian Jessie. Obrigado
ako
10

Outra razão ./configurepode falhar é porque você não pkg-configinstalou, como no meu caso com o PHP7 e o Debian Jessie:

sudo apt-get install pkg-config
Razvan Grigore
fonte
2
Isso já foi apontado em uma resposta diferente de três anos atrás.
kasperd
9

Para compilar o php-5.4.45 no debian 8.1 (Jessie), tive que:

apt-get install libssl-dev

Depois disso, eu poderia compilá-lo usando --with-openssl

steven
fonte
2

Corrigi o problema instalando bibliotecas extras

sudo apt-get install -y autoconf g++ make openssl libssl-dev libcurl4-openssl-dev
sudo apt-get install -y libcurl4-openssl-dev pkg-config
sudo apt-get install -y libsasl2-dev
Toir427
fonte
1

No centos7, instale o openssl-devel yum install openssl-devel

Uriel Acosta Hernández
fonte
0

Você precisa ajudar a configurar para descobrir onde procurar o arquivo evp.h, porque, por padrão, ele procura diretórios e adiciona sufixos codificados a eles para encontrá-lo. Eu guardei os detalhes na minha página wiki para aqueles que querem entender a solução. Aqui está o que funcionou para mim:

root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # PHP_OPENSSL_DIR="/usr /usr/lib/x86_64-linux-gnu"
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # ./configure --with-libdir=""
[...]
checking for DSA_get_default_method in -lssl... yes
checking for X509_free in -lcrypto... yes
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6 #                     <------------------------------------- YES !
[...]
config.status: creating config.h
config.status: config.h is unchanged
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # 

YMMV (os caminhos são diferentes). Se isso não funcionou, verifique a página da wiki , o ajudará a descobrir quais caminhos colocar.

ychaouche
fonte
0

Eu tive o mesmo problema no Fedora 19, apesar de ter o OpenSSL instalado.

Eu tive que instalar o openssl-devel.i686, que encontrei fazendo uma pesquisa genérica por todos os pacotes relacionados ao ssl:

sudo yum search ssl
sudo yum install openssl-devel.i686

Então eu executei o configure novamente com sucesso:

sudo ./configure --with-apxs2=/usr/bin/apxs --with-mysql --enable-mbstring --with-mysqli --with-openssl=/usr/
Anthony
fonte
0

Apenas o meu feedback: Depois de resolver esse problema de ssl neste post, desisti completamente de compilar o php 5.3 porque ele falhou mais nas extensões do zend dom no meio, encontrei alguns patches e decidi simplesmente deixar esse barulho . Há o ubuntu 12.04 que ainda possui 5.3.10 php a bordo. Tenha cuidado com o php-fpm na época limpando variáveis ​​de ambiente. Portanto, não se surpreenda quando não puder passar variáveis ​​globais da janela de encaixe, por exemplo.

holms
fonte