GNU/Linux >> Tutoriales Linux >  >> Linux

Error No se puede encontrar [PHP Extension mysqlnd] de OpenSSL

Al instalar mysqlnd extensión de PHP, y cuando configure se ejecuta el script, encontré el error:No se puede encontrar OpenSSL

A continuación se muestra el mensaje de error 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>
de OpenSSL

Solución:No se puede encontrar OpenSSL

Paso 1:Buscar 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

Paso 2:Establecer la variable de entorno PHP_OPENSSL_DIR

El script de configuración necesita ayuda para saber dónde buscarlo. Veamos cómo el script de configuración intenta buscar ese archivo. Abra el archivo de configuración con la ayuda de su editor favorito y navegue hasta el bloque que se muestra a continuación:

[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; }
[...]

Si observa el código anterior, configure utiliza variables como PHP_OPENSSL_DIR para buscar evp.h . Si repite el PHP_OPENSSL_DIR variable, verás que no contiene /usr, que es donde se encuentra el evp.h está presente y debería estar mirando. Entonces, la solución es simplemente definir esta variable como una variable de entorno, exportarla y ejecutar configurar nuevamente.

[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

¡Vaya! no más evp.h error pero encontré otro error:No se pueden encontrar las bibliotecas de OpenSSL. Usando la misma técnica que la anterior, busquemos la ruta para las bibliotecas OpenSSL.

Paso 3:busque la ruta de la biblioteca 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

Paso 3:Agregue la ruta de la biblioteca OpenSSL a PHP_OPENSSL_DIR

Agregue la ruta de bibliotecas de OpenSSL /usr/lib64 a PHP_OPENSSL_DIR variable de entorno.

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

Desafortunadamente, solo no resolvió el problema. Después de analizar el código de configuración, descubrimos que necesitamos configurar otra variable de entorno llamada PHP_LIBDIR . Pero esta variable no se lee desde el entorno, sino por argumentos como se ve en el siguiente fragmento del código de configuración:

[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

Entonces agregó un nuevo argumento --with-libdir="" mientras ejecuta configurar

[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

El script de configuración ahora se completó con éxito, continúe con make y make install .


Linux
  1. No se puede compilar Python.h – Error de instalación de Websockify

  2. Error de configuración de phpize:no se pueden encontrar las fuentes (config.m4)

  3. ld no puede encontrar una biblioteca existente

  4. No se puede encontrar el error de la biblioteca libcrypto

  5. Openssl:certificado autofirmado de error en la cadena de certificados

No se puede encontrar pspell:corrige el error de configuración de PHP

¿Omitir la extensión con Buscar?

¿No se puede encontrar -lm?

Error de compilación de Openssl

ERROR:ld.so:el objeto LD_PRELOAD no se puede precargar:ignorado

Samba 4.9.0 ./configurar error de lmdb