GNU/Linux >> Belajar Linux >  >> Linux

Kesalahan Tidak dapat menemukan [Ekstensi PHP mysqlnd] OpenSSL

Saat menginstal mysqlnd ekstensi PHP, dan ketika configure skrip dijalankan, saya menemukan kesalahan – Tidak dapat menemukan OpenSSL

Di bawah ini adalah pesan kesalahan lengkapnya:

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

Solusi:Tidak dapat menemukan OpenSSL

Langkah1:Telusuri 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

Langkah 2:Setel variabel lingkungan PHP_OPENSSL_DIR

Skrip konfigurasi memerlukan bantuan untuk mencari tahu di mana mencarinya. Mari kita lihat bagaimana skrip konfigurasi mencoba mencari file tersebut. Buka file konfigurasi dengan bantuan editor favorit Anda dan arahkan ke blok yang ditunjukkan di bawah ini:

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

Jika Anda mengamati kode di atas, konfigurasikan menggunakan variabel seperti PHP_OPENSSL_DIR untuk mencari evp.h . Jika Anda menggemakan PHP_OPENSSL_DIR variabel, Anda akan melihat bahwa itu tidak mengandung /usr, dimana evp.h hadir dan harus dilihat. Jadi solusinya adalah dengan mendefinisikan variabel ini sebagai variabel lingkungan, mengekspornya, dan menjalankan konfigurasi lagi.

[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! tidak ada lagi evp.h kesalahan tetapi menemukan kesalahan lain:Tidak dapat menemukan perpustakaan OpenSSL. Dengan menggunakan teknik yang sama seperti di atas, mari cari tahu jalur untuk library OpenSSL.

Langkah 3:Temukan jalur perpustakaan 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

Langkah 3:Tambahkan jalur perpustakaan OpenSSL ke PHP_OPENSSL_DIR

Tambahkan jalur lib OpenSSL /usr/lib64 ke PHP_OPENSSL_DIR variabel lingkungan.

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

Sayangnya, itu saja tidak menyelesaikan masalah. Setelah menganalisis kode konfigurasi, ternyata kita perlu mengatur variabel lingkungan lain yang disebut PHP_LIBDIR . Tetapi variabel ini tidak dibaca dari lingkungan, tetapi oleh argumen seperti yang terlihat dari cuplikan kode konfigurasi di bawah ini:

[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

Jadi tambahkan argumen baru --with-libdir="" saat menjalankan konfigurasi

[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

Skrip konfigurasi sekarang berhasil diselesaikan, lanjutkan dengan make dan make install .


Linux
  1. Tidak dapat mengkompilasi Python.h – Kesalahan instalasi Websockify

  2. kesalahan konfigurasi phpize:tidak dapat menemukan sumber (config.m4)

  3. Tidak dapat menemukan pspell – Perbaiki Kesalahan Konfigurasi PHP

  1. Openssl :kesalahan sertifikat yang ditandatangani sendiri dalam rantai sertifikat

  2. Kesalahan Kompilasi OCaml:/usr/bin/ld:tidak dapat menemukan -lstr

  3. Menginstal Qt di linux, tidak dapat menemukan -lGL

  1. Perbaiki kesalahan Class ZipArchive tidak ditemukan [PHP 7]

  2. Cara Memperbaiki kesalahan Konfigurasi:tidak dapat menemukan direktori makro 'm4' [Terpecahkan]

  3. Samba 4.9.0 ./konfigurasi kesalahan lmdb