Come risolvere `configure: errore: Impossibile trovare <evp.h>` di OpenSSL?


33

Sto cercando di ricompilare PHP, ma ./configure non riesce a:

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

Ho installato LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL.

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

quando provo con

--with-openssl

mi dice:

configure: errore: impossibile trovare le librerie di OpenSSL

Dove sono i **** il problema?

PS Php è 5.2.5, il sistema operativo è Ubuntu

Risposte:


47

Lo stesso problema si è verificato Ubuntu 12.04.1 LTSed è stato risolto emettendo:

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


Ciao :) Ho dimenticato come posso risolvere il mio problema. :) Era un anno e mezzo fa.
CappY

2
Quanto è libcurl4-openssl-devdiverso da libssl-dev?
Gherman,

16

Per compilare php-5.3 su Debian wheezy è necessario quanto segue per correggere questo errore.

apt-get install libssl-dev libsslcommon2-dev

Quindi è necessario configurare con quanto segue incluso

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

2
1+, mi ha aiutato molto. Ho anche dovuto aggiungere --with-php-config /usr/local/src/php-x.x.x/scripts/php_config. Ho scritto un how-to compilare PHP con estensioni.
Daniel W.

funziona ma non supera tutti i casi di test.
Rafael,

Funziona per la compilazione manuale di PHP5.2 su Ubuntu 14.04 con la direttiva "--with-openssl". molte grazie.
Dr I

12

Supponendo che tu abbia già le librerie OpenSSL e i file di intestazione (sui sistemi rpm questi ultimi sono nel pacchetto xxxx-devel) ...

Il problema sembra derivare da come configurerisolve le dipendenze che sono distribuite nel filesystem. Per compilare il codice, il comiler deve sapere dove si trovano le intestazioni. Per collegare il codice, il linker deve sapere dove si trovano le librerie.

[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

La directory include ha il file include, ma pkg-config fallisce perché la libreria non è in / usr / include / openssl, è in / usr / lib

Eseguire nuovamente la configurazione con / usr come directory:

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

Il percorso passato come argomento viene cercato per trovare le risorse pertinenti.


Questo ha funzionato per me. Questa è una buona soluzione
Shawn Welch,

Questa era la soluzione su debian wheezy + php 5.3.10! Grazie!!!!
holms

@holms: questa è ora una versione piuttosto vecchia di php. Soprattutto se si intende utilizzare pacchetti compilati da origine anziché gestiti, è consigliabile utilizzare una versione recente.
symcbean,

Questa è stata la soluzione per me php-7.1.12su cui basarmi Debian Jessie. Grazie
ako il

10

Un altro motivo ./configurepotrebbe non riuscire perché non hai pkg-configinstallato, come nel mio caso con PHP7 e Debian Jessie:

sudo apt-get install pkg-config

2
Ciò è già stato sottolineato in una risposta diversa da tre anni fa.
Kasperd,

9

Per compilare php-5.4.45 su debian 8.1 (Jessie) ho dovuto:

apt-get install libssl-dev

Dopo di ciò ho potuto compilarlo semplicemente usando --with-openssl


2

Ho risolto il problema installando librerie extra

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

Devi aiutare a configurare per capire dove cercare il file evp.h, perché per impostazione predefinita cercherà le directory e aggiungerà suffissi hardcoded per trovarlo. Ho mantenuto i dettagli nella mia pagina wiki per coloro che vogliono capire la soluzione. Ecco cosa ha funzionato per me:

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 (i percorsi sono diversi). Se non ha funzionato per te, controlla la pagina wiki , ti aiuterà a capire quali percorsi mettere.


0

Ho avuto lo stesso problema su Fedora 19 nonostante fosse installato OpenSSL.

Ho dovuto installare openssl-devel.i686 che ho trovato facendo una ricerca generica per tutti i pacchetti relativi a ssl:

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

Quindi ho eseguito nuovamente la configurazione con successo:

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

0

Solo il mio feedback: dopo aver risolto questo problema ssl da questo post, ho completamente rinunciato alla compilazione di php 5.3 perché è fallito ulteriormente sulle estensioni zend dom nel mezzo, ho trovato alcune patch e ho deciso di abbandonare questa confusione . C'è Ubuntu 12.04 che ha ancora 5.3.10 php a bordo. Fai attenzione a php-fpm, quindi cancella le variabili di ambiente. Quindi non essere sorpreso quando non puoi passare variabili globali dalla finestra mobile, ad esempio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.