it-swarm.com.de

So lösen Sie `configure: error: OpenSSLs <evp.h>` kann nicht gefunden werden?

Ich versuche, PHP neu zu kompilieren, aber ./configure schlägt fehl bei:

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

Ich habe LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL installiert.

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

wenn ich es mit versuche

--with-openssl

sagt mir:

configure: error: OpenSSL-Bibliotheken können nicht gefunden werden

Wo sind die **** das Problem?

P.S. PHP ist 5.2.5, Betriebssystem ist Ubuntu

33
CappY

Das gleiche Problem trat bei Ubuntu 12.04.1 LTS Auf und wurde durch Folgendes behoben:

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

47
antila

Um php-5.3 auf Debian Wheezy zu erstellen, benötigen Sie Folgendes, um diesen Fehler zu beheben.

apt-get install libssl-dev libsslcommon2-dev

Dann müssen Sie Folgendes konfigurieren

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

Angenommen, Sie haben bereits die OpenSSL-Bibliotheken und Header-Dateien (auf RPM-Systemen befinden sich letztere im xxxx-devel-Paket) ...

Das Problem scheint sich daraus zu ergeben, wie configure Abhängigkeiten auflöst, die im Dateisystem verteilt sind. Um den Code zu kompilieren, muss der Comiler wissen, wo sich die Header befinden. Um den Code zu verknüpfen, muss der Linker wissen, wo sich die Bibliotheken befinden.

[[email protected]]$ 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>

[[email protected]]$ find /usr/include -name evp.h
/usr/include/openssl/evp.h

Das Include-Verzeichnis enthält die Include-Datei, aber pkg-config schlägt fehl, weil die Bibliothek nicht in/usr/include/openssl ist, in/usr/lib

Führen Sie configure erneut mit/usr als Verzeichnis aus:

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

Der als Argument übergebene Pfad wird durchsucht, um die relevanten Ressourcen zu finden.

12
symcbean

Ein weiterer Grund, warum ./configure Fehlschlagen könnte, ist, dass Sie pkg-config Nicht installiert haben, wie in meinem Fall mit PHP7 und Debian Jessie:

Sudo apt-get install pkg-config
10
Razvan Grigore

Um php-5.4.45 auf debian 8.1 (Jessie) zu kompilieren, musste ich:

apt-get install libssl-dev

Danach konnte ich es einfach mit --with-openssl Kompilieren.

9
steven

Ich habe das Problem durch die Installation zusätzlicher Bibliotheken behoben

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

Auf centos7 Installiere openssl-devel yum install openssl-devel

Nur mein Feedback: Nachdem ich dieses SSL-Problem aus diesem Beitrag gelöst habe, habe ich das Kompilieren von PHP 5.3 vollständig aufgegeben, da es bei Zend Dom-Erweiterungen in der Mitte weiter ausgefallen ist. Ich habe einige Patches gefunden und beschlossen, diese Aufregung einfach fallen zu lassen . Es gibt Ubuntu 12.04, das noch 5.3.10 PHP an Bord hat. Seien Sie vorsichtig, php-fpm hat damals Umgebungsvariablen gelöscht. Seien Sie also nicht überrascht, wenn Sie beispielsweise keine globalen Variablen vom Docker übergeben können.

0
holms

Sie müssen dabei helfen, herauszufinden, wo nach der Datei evp.h gesucht werden soll, da standardmäßig nach Verzeichnissen gesucht und fest codierte Suffixe hinzugefügt werden, um sie zu finden. Ich habe die Details in meiner Wiki-Seite für diejenigen aufbewahrt, die die Lösung verstehen wollen. Folgendes hat bei mir funktioniert:

[email protected][10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # PHP_OPENSSL_DIR="/usr /usr/lib/x86_64-linux-gnu"
[email protected][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
[email protected][10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # 

YMMV (Pfade sind unterschiedlich). Wenn das bei Ihnen nicht funktioniert hat überprüfen Sie die Wiki-Seite , hilft es Ihnen, herauszufinden, welche Pfade Sie setzen müssen.

0
ychaouche

Ich hatte das gleiche Problem mit Fedora 19, obwohl OpenSSL installiert war.

Ich musste openssl-devel.i686 installieren, das ich durch eine generische Suche nach allen Paketen im Zusammenhang mit ssl gefunden habe:

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

Dann habe ich configure erneut mit Erfolg ausgeführt:

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