GNU/Linux >> Tutoriels Linux >  >> Linux

Erreur Impossible de trouver l'[extension PHP mysqlnd] d'OpenSSL

Lors de l'installation de mysqlnd PHP, et quand le configure script est exécuté, j'ai rencontré l'erreur – Impossible de trouver OpenSSL

Ci-dessous le message d'erreur complet :

[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>
d'OpenSSL

Solution :Impossible de trouver OpenSSL

Étape 1 :Rechercher 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

Étape 2 :Définir la variable d'environnement PHP_OPENSSL_DIR

Le script de configuration a besoin d'aide pour savoir où le chercher. Voyons comment le script de configuration essaie de rechercher ce fichier. Ouvrez le fichier de configuration à l'aide de votre éditeur préféré et accédez au bloc ci-dessous :

[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 vous observez le code ci-dessus, configurez utilise des variables telles que PHP_OPENSSL_DIR pour rechercher evp.h . Si vous faites écho au PHP_OPENSSL_DIR variable, vous verrez qu'elle ne contient pas /usr, où se trouve le evp.h est présent et il devrait être regardé. La solution consiste donc simplement à définir cette variable en tant que variable d'environnement, à l'exporter et à relancer la configuration.

[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! plus de evp.h erreur mais a rencontré une autre erreur :Impossible de trouver les bibliothèques d'OpenSSL. En utilisant la même technique que ci-dessus, découvrons le chemin des bibliothèques OpenSSL.

Étape 3 :Trouver le chemin de la bibliothèque 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

Étape 3 :Ajoutez le chemin de la bibliothèque OpenSSL à PHP_OPENSSL_DIR

Ajoutez le chemin des bibliothèques OpenSSL /usr/lib64 vers PHP_OPENSSL_DIR variable d'environnement.

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

Malheureusement, cela seul n'a pas résolu le problème. Après avoir analysé le code de configuration, nous avons constaté que nous devions définir une autre variable d'environnement appelée PHP_LIBDIR . Mais cette variable n'est pas lue à partir de l'environnement, mais par des arguments comme le montre l'extrait ci-dessous du code de configuration :

[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

Donc ajouté un nouvel argument --with-libdir="" lors de l'exécution de 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

Le script de configuration est maintenant terminé avec succès, continuez avec le make et make install .


Linux
  1. Correction de l'erreur Class ZipArchive introuvable [PHP 7]

  2. Impossible de compiler Python.h - Erreur d'installation de Websockify

  3. Erreur de compilation OCaml :/usr/bin/ld :impossible de trouver -lstr

  4. Installation de Qt sous Linux, impossible de trouver -lGL

  5. Impossible de trouver l'erreur pkg-config

Impossible de trouver l'erreur de bibliothèque libcrypto

Erreur de compilation OpenSSL

Openssl :erreur de certificat auto-signé dans la chaîne de certificats

ERREUR :ld.so :l'objet LD_PRELOAD ne peut pas être préchargé :ignoré

Erreur de construction avec cmake :impossible de trouver -lpthreads

Erreur Samba 4.9.0 ./configure lmdb