web-dev-qa-db-fra.com

Comment résoudre `configure: erreur: impossible de trouver <evp.h> d'OpenSSL?

Im essayant de recompiler PHP, mais ./configure échoue à:

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

J'ai installé LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL.

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

quand j'essaye avec

--with-openssl

dit moi:

configure: erreur: impossible de trouver les bibliothèques d'OpenSSL

Où les **** sont le problème?

P.S. Php est 5.2.5, OS est Ubuntu

33
CappY

Le même problème s'est produit le Ubuntu 12.04.1 LTS et il a été résolu en publiant:

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

47
antila

Pour construire php-5.3 sur Debian Wheezy, vous avez besoin des éléments suivants pour corriger cette erreur.

apt-get install libssl-dev libsslcommon2-dev

Ensuite, vous devez configurer avec les éléments suivants inclus

./configure --with-libdir=/lib/x86_64-linux-gnu ...
16
JinnKo

En supposant que vous disposez déjà des bibliothèques OpenSSL et des fichiers d'en-tête (sur les systèmes rpm, ces derniers sont dans le package xxxx-devel) ...

Le problème semble provenir de la façon dont configure résout les dépendances qui sont réparties autour du système de fichiers. Pour compiler le code, le compilateur doit savoir où sont les en-têtes. Pour lier le code, l'éditeur de liens doit savoir où se trouvent les bibliothèques.

[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

Le répertoire include contient le fichier include, mais pkg-config échoue car la bibliothèque est pas dans/usr/include/openssl, dans/usr/lib

Exécutez à nouveau configure avec/usr comme répertoire:

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
...

Le chemin passé en argument est recherché pour trouver les ressources pertinentes.

12
symcbean

Une autre raison ./configure peut échouer parce que vous n'avez pas pkg-config installé, comme dans mon cas avec PHP7 et Debian Jessie:

Sudo apt-get install pkg-config
10
Razvan Grigore

Pour compiler php-5.4.45 sur debian 8.1 (Jessie) j'ai dû:

apt-get install libssl-dev

Après cela, je pourrais le compiler en utilisant simplement --with-openssl

9
steven

J'ai résolu le problème en installant des bibliothèques supplémentaires

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
2
Toir427

Sur centos7, installez openssl-devel yum install openssl-devel

1

Juste mes commentaires: après avoir résolu ce problème ssl à partir de ce post, j'ai complètement abandonné la compilation de php 5.3 car il a échoué sur les extensions zend dom au milieu, j'ai trouvé des correctifs et j'ai décidé de laisser tomber . Il y a Ubuntu 12.04 qui a toujours 5.3.10 php à bord. Soyez prudent php-fpm à l'époque effacer les variables d'environnement. Ne soyez donc pas surpris lorsque vous ne pouvez pas passer de variables globales depuis docker par exemple.

0
holms

Vous devez aider à configurer la recherche du fichier evp.h, car par défaut, il recherchera les répertoires et leur ajoutera des suffixes codés en dur pour le trouver. J'ai gardé les détails dans ma page wiki pour ceux qui veulent comprendre la solution. Voici ce qui a fonctionné pour moi:

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 (les chemins sont différents). Si cela n'a pas fonctionné pour vous consultez la page wiki , cela vous aidera à déterminer les chemins à mettre.

0
ychaouche

J'ai eu le même problème sur Fedora 19 malgré l'installation d'OpenSSL.

J'ai dû installer openssl-devel.i686 que j'ai trouvé en faisant une recherche générique pour tous les paquets liés à ssl:

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

Ensuite, j'ai à nouveau exécuté configure avec succès:

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