GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fehler Kann die [PHP-Erweiterung mysqlnd] von OpenSSL nicht finden

Während der Installation von mysqlnd PHP-Erweiterung und wenn die configure Skript ausgeführt wird, ist der Fehler aufgetreten – Cannot find OpenSSL

Unten ist die vollständige Fehlermeldung:

[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>
von OpenSSL

Lösung:Kann OpenSSL

nicht finden

Schritt1:Suchen Sie nach 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

Schritt 2:Umgebungsvariable PHP_OPENSSL_DIR festlegen

Das configure-Skript braucht Hilfe, um herauszufinden, wo es danach suchen muss. Sehen wir uns an, wie das Konfigurationsskript versucht, nach dieser Datei zu suchen. Öffnen Sie die Konfigurationsdatei mit Hilfe Ihres bevorzugten Editors und navigieren Sie zu dem unten gezeigten Block:

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

Wenn Sie den obigen Code beobachten, verwendet configure Variablen wie PHP_OPENSSL_DIR um nach evp.h zu suchen . Wenn Sie PHP_OPENSSL_DIR wiederholen -Variable sehen Sie, dass sie /usr, nicht enthält wo sich die evp.h befindet ist vorhanden und sollte angeschaut werden. Die Lösung besteht also darin, diese Variable einfach als Umgebungsvariable zu definieren, sie zu exportieren und configure erneut auszuführen.

[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! kein evp.h mehr Fehler, ist aber auf einen anderen Fehler gestoßen:Kann OpenSSL-Bibliotheken nicht finden. Lassen Sie uns mit der gleichen Technik wie oben den Pfad für OpenSSL-Bibliotheken herausfinden.

Schritt 3:Pfad der OpenSSL-Bibliothek finden

[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

Schritt 3:Fügen Sie den Pfad der OpenSSL-Bibliothek zu PHP_OPENSSL_DIR hinzu

Fügen Sie den OpenSSL-Bibliothekspfad /usr/lib64 hinzu nach PHP_OPENSSL_DIR Umgebungsvariable.

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

Leider hat es alleine das Problem nicht gelöst. Nach der Analyse des Konfigurationscodes haben wir festgestellt, dass wir eine weitere Umgebungsvariable namens PHP_LIBDIR setzen müssen . Aber diese Variable wird nicht aus der Umgebung gelesen, sondern durch Argumente, wie aus dem folgenden Snippet des Konfigurationscodes ersichtlich ist:

[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

Also ein neues Argument --with-libdir="" hinzugefügt beim Ausführen von 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

Das Konfigurationsskript ist nun erfolgreich abgeschlossen, fahren Sie mit dem make fort und make install .


Linux
  1. Python.h kann nicht kompiliert werden – Websockify-Installationsfehler

  2. phpize-Konfigurationsfehler:Quellen können nicht gefunden werden (config.m4)

  3. Auslassen der Erweiterung mit Find?

  4. ld kann keine vorhandene Bibliothek finden

  5. Openssl-Kompilierungsfehler

libcrypto-Bibliotheksfehler kann nicht gefunden werden

OCaml-Kompilierungsfehler:/usr/bin/ld:kann -lstr nicht finden

Beim Installieren von Qt unter Linux kann -lGL nicht gefunden werden

pkg-config-Fehler kann nicht gefunden werden

Fehler beim Erstellen von cmake:kann -lpthreads nicht finden

Samba 4.9.0 ./configure lmdb-Fehler