GNU/Linux >> Linux Esercitazione >  >> Linux

Errore Impossibile trovare [estensione PHP mysqlnd] di OpenSSL

Durante l'installazione di mysqlnd estensione PHP e quando configure lo script è stato eseguito, ho riscontrato l'errore – Impossibile trovare OpenSSL

Di seguito è riportato il messaggio di errore completo:

[root@terra-node-01 mysqlnd]# ./configure
[...]
checking for X509_free in -lcrypto... yes
checking for pkg-config... /bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>
di OpenSSL

Soluzione:impossibile trovare OpenSSL

Step1:cerca evp.h

[root@terra-node-01 mysqlnd]# locate evp.h
/opt/at12.0/include/openssl/evp.h
/opt/at12.0/share/doc/openssl/html/man7/evp.html
/usr/include/openssl/evp.h

Fase 2:imposta la variabile di ambiente PHP_OPENSSL_DIR

Lo script di configurazione ha bisogno di aiuto per capire dove cercarlo. Vediamo come configure script tenta di cercare quel file. Apri il file di configurazione con l'aiuto del tuo editor preferito e vai al blocco mostrato di seguito:

[root@terra-node-01 mysqlnd]# vim configure
[...]
for i in $PHP_OPENSSL_DIR; do
if test -r $i/include/openssl/evp.h; then
OPENSSL_INCDIR=$i/include
fi
if test -r $i/$PHP_LIBDIR/libssl.a -o -r $i/$PHP_LIBDIR/libssl.$SHLIB_SUFFIX_NAME; then
OPENSSL_LIBDIR=$i/$PHP_LIBDIR
fi
test -n "$OPENSSL_INCDIR" && test -n "$OPENSSL_LIBDIR" && break
done

if test -z "$OPENSSL_INCDIR"; then
as_fn_error $? "Cannot find OpenSSL's <evp.h>" "$LINENO" 5
fi

if test -z "$OPENSSL_LIBDIR"; then
as_fn_error $? "Cannot find OpenSSL's libraries" "$LINENO" 5
fi

old_CPPFLAGS=$CPPFLAGS
CPPFLAGS=-I$OPENSSL_INCDIR
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL version" >&5
$as_echo_n "checking for OpenSSL version... " >&6; }
[...]

Se osservi il codice sopra, configure utilizza variabili come PHP_OPENSSL_DIR per cercare evp.h . Se fai eco al PHP_OPENSSL_DIR variabile, vedrai che non contiene /usr, che è dove il evp.h è presente e dovrebbe essere guardato. Quindi la soluzione è semplicemente definire questa variabile come variabile di ambiente, esportarla ed eseguire nuovamente configure.

[root@terra-node-01 mysqlnd]# PHP_OPENSSL_DIR="/usr"
[root@terra-node-01 mysqlnd]# export PHP_OPENSSL_DIR
[root@terra-node-01 mysqlnd]# ./configure
[...]
checking for X509_free in -lcrypto... yes
checking for pkg-config... /bin/pkg-config
configure: error: Cannot find OpenSSL's libraries

Oh! non più evp.h errore ma riscontrato un altro errore:Impossibile trovare le librerie di OpenSSL. Usando la stessa tecnica di cui sopra, scopriamo il percorso per le librerie OpenSSL.

Fase 3:trova il percorso della libreria OpenSSL

[root@terra-node-01 mysqlnd]# locate libssl.so
locate libssl.so
/opt/at12.0/lib64/libssl.so
/opt/at12.0/lib64/libssl.so.1.1
/opt/at12.0/lib64/power8/libssl.so
/opt/at12.0/lib64/power8/libssl.so.1.1
/opt/at12.0/lib64/power9/libssl.so
/opt/at12.0/lib64/power9/libssl.so.1.1
/usr/lib64/.libssl.so.1.0.2k.hmac
/usr/lib64/.libssl.so.10.hmac
/usr/lib64/libssl.so
/usr/lib64/libssl.so.1.0.2k
/usr/lib64/libssl.so.10

Fase 3:aggiungi il percorso della libreria OpenSSL a PHP_OPENSSL_DIR

Aggiungi il percorso delle librerie OpenSSL /usr/lib64 a PHP_OPENSSL_DIR variabile di ambiente.

[root@terra-node-01 mysqlnd]# PHP_OPENSSL_DIR="/usr /usr/lib64"
[root@terra-node-01 mysqlnd]# export PHP_OPENSSL_DIR

Sfortunatamente, da solo non ha risolto il problema. Dopo aver analizzato il codice di configurazione, abbiamo scoperto che è necessario impostare un'altra variabile di ambiente chiamata PHP_LIBDIR . Ma questa variabile non viene letta dall'ambiente, ma da argomenti come si vede dal frammento di codice di configurazione seguente:

[root@terra-node-01 mysqlnd]# vim configure
[...]
# Check whether --with-libdir was given.
if test "${with_libdir+set}" = set; then :
withval=$with_libdir; PHP_LIBDIR=$withval

Quindi aggiunto un nuovo argomento --with-libdir="" durante l'esecuzione di configure

[root@terra-node-01 mysqlnd]# ./configure --with-libdir=""
[...]
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
config.status: config.h is unchanged

Lo script di configurazione è ora completato con successo, vai avanti con il make e make install .


Linux
  1. Correzione dell'errore di classe ZipArchive non trovato [PHP 7]

  2. Come risolvere l'errore di configurazione:impossibile trovare la directory macro 'm4' [Risolto]

  3. Errore durante il caricamento delle librerie condivise libcrypto.so.1.1 – OpenSSL [fissare]

  4. Impossibile trovare un URL di base valido:errore YumRepo [risolto]

  5. Impossibile compilare Python.h – Errore di installazione di Websockify

Omissione dell'estensione con Trova?

Non riesci a trovare -lm?

ld non riesce a trovare una libreria esistente

Openssl:errore certificato autofirmato nella catena di certificati

ERRORE:ld.so:l'oggetto LD_PRELOAD non può essere precaricato:ignorato

Errore di Samba 4.9.0 ./configure lmdb