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

33

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?

PS Php ist 5.2.5, Betriebssystem ist Ubuntu

CappY
quelle

Antworten:

47

Das gleiche Problem trat am auf Ubuntu 12.04.1 LTSund wurde behoben durch:

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

Antila
quelle
Hallo :) Ich habe vergessen, wie ich mein Problem lösen kann. :) Es war vor einem halben Jahr.
CappY
2
Wie libcurl4-openssl-devunterscheidet sich von libssl-dev?
Gherman
16

Um PHP-5.3 unter Debian Wheezy zu erstellen, müssen Sie Folgendes tun, um diesen Fehler zu beheben.

apt-get install libssl-dev libsslcommon2-dev

Dann müssen Sie mit den folgenden enthalten konfigurieren

./configure --with-libdir=/lib/x86_64-linux-gnu ...
JinnKo
quelle
2
1+ hat mir sehr geholfen. Ich musste auch hinzufügen --with-php-config /usr/local/src/php-x.x.x/scripts/php_config. Ich habe eine Anleitung zum Kompilieren von PHP mit Erweiterungen geschrieben.
Daniel W.
funktioniert, schlägt aber alle Testfälle fehl.
Rafael
Kompiliert das Handbuch für PHP5.2 unter Ubuntu 14.04 mit der Direktive "--with-openssl". Vielen Dank.
Dr. I.,
12

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

Das Problem scheint sich daraus zu ergeben, wie configureAbhängigkeiten aufgelöst werden, die im Dateisystem verteilt sind. Um den Code zu kompilieren, muss der Comiler wissen, wo sich die Header befinden. Um den Code zu verlinken, muss der Linker wissen, wo sich die Bibliotheken befinden.

[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

Das include-Verzeichnis enthält die include-Datei, aber pkg-config schlägt fehl, da sich die Bibliothek nicht in / usr / include / openssl befindet, sondern 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.

symcbean
quelle
Das hat bei mir funktioniert. Das ist eine gute Lösung.
Shawn Welch
Dies war eine Lösung für Debian Wheezy + PHP 5.3.10! Vielen Dank!!!!
Holms
@holms: das ist jetzt eine ziemlich alte version von php. Insbesondere wenn Sie kompilierte Pakete anstelle von verwalteten Paketen verwenden, sollten Sie eine neuere Version verwenden.
Symcbean
Das war die Lösung für mich bauen php-7.1.12auf Debian Jessie. Vielen Dank
ako
10

Ein weiterer Grund ./configurekönnte sein, dass Sie nicht pkg-configinstalliert haben, wie in meinem Fall mit PHP7 und Debian Jessie:

sudo apt-get install pkg-config
Razvan Grigore
quelle
2
Darauf wurde bereits in einer anderen Antwort als vor drei Jahren hingewiesen.
Kasperd
9

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 kompilieren --with-openssl

Steven
quelle
2

Ich habe das Problem behoben, indem ich zusätzliche Bibliotheken installiert habe

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
quelle
1

Auf centos7 Installieren Sie openssl-devel yum install openssl-devel

Uriel Acosta Hernández
quelle
0

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

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 (Pfade sind unterschiedlich). Wenn dies für Sie nicht funktioniert hat, überprüfen Sie die Wiki-Seite , um herauszufinden, welche Pfade Sie verwenden müssen.

ychaouche
quelle
0

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

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

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/
Anthony
quelle
0

Nur mein Feedback: Nachdem ich dieses SSL-Problem in diesem Beitrag gelöst habe, habe ich es komplett aufgegeben, PHP 5.3 zu kompilieren, da es bei zend dom-Erweiterungen in der Mitte fehlgeschlagen ist . Es gibt Ubuntu 12.04, das noch 5.3.10 PHP an Bord hat. Seien Sie vorsichtig, php-fpm löschte damals Umgebungsvariablen. Seien Sie also nicht überrascht, wenn Sie beispielsweise keine globalen Variablen vom Docker übergeben können.

holms
quelle