Comment résoudre `configure: error: impossible de trouver le <evp.h> de OpenSSL?


33

J'essaie de recompiler PHP, mais ./configure échoue à:

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

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

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

quand j'essaye avec

--with-openssl

dit moi:

configure: error: impossible de trouver les bibliothèques OpenSSL

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

PS Php est 5.2.5, OS est Ubuntu

Réponses:


47

Le même problème s'est produit Ubuntu 12.04.1 LTSet a été résolu en émettant:

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


Bonjour :) J'ai oublié comment résoudre mon problème. :) C'était il y a un an et demi.
CappY

2
Comment est libcurl4-openssl-devdifférent de libssl-dev?
Gherman

16

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

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

2
1+ m'a beaucoup aidé. J'ai aussi dû ajouter --with-php-config /usr/local/src/php-x.x.x/scripts/php_config. J'ai écrit un guide pour compiler PHP avec des extensions.
Daniel W.

fonctionne mais échoue tous les cas de test.
Rafael

Fonctionne pour la compilation manuelle de PHP 5.2 sur Ubuntu 14.04 avec la directive "--with-openssl". Merci beaucoup.
Dr I

12

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

Le problème semble provenir de la façon dont configureles dépendances qui sont distribuées dans le système de fichiers sont résolues. Pour compiler le code, le compilateur doit savoir où se trouvent 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 ne se trouve pas dans / usr / include / openssl, mais 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 tant qu'argument est recherché pour trouver les ressources pertinentes.


Cela a fonctionné pour moi. C'est une bonne solution.
Shawn Welch

C'était la solution sur debian Wheezy + php 5.3.10! Merci!!!!
Holms

@holms: c'est maintenant une version un peu ancienne de php. En particulier si vous utilisez des packages compilés à partir de la source plutôt que des packages gérés, vous devez utiliser une version récente.
symcbean

Ce fut la solution pour moi la construction php-7.1.12sur Debian Jessie. Merci
ako

10

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

sudo apt-get install pkg-config

2
Cela avait déjà été souligné dans une réponse différente d'il y a trois ans.
Kasperd

9

Pour compiler php-5.4.45 sur debian 8.1 (Jessie), je devais:

apt-get install libssl-dev

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


2

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


0

Vous devez vous aider à configurer pour savoir où chercher le fichier evp.h, car par défaut, il recherchera des 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 ne fonctionne pas pour vous, consultez la page du wiki , cela vous aidera à déterminer les chemins à mettre.


0

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ée en effectuant 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 de nouveau exécuté configure avec succès:

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

0

Juste mes commentaires: Après avoir résolu ce problème SSL de cet article, j'ai complètement abandonné la compilation de PHP 5.3 car il échouait au-dessus des extensions de Zend Dom au milieu, j'ai trouvé quelques correctifs et j'ai décidé de laisser tomber ce problème. . Il y a Ubuntu 12.04 qui a encore 5.3.10 php à bord. Attention, php-fpm efface à l'époque les variables d'environnement. Donc, ne soyez pas surpris lorsque vous ne pouvez pas transmettre les variables globales de docker par exemple.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.