Konfigurasi PHP tidak menemukan perpustakaan header LDAP [ditutup]

9

Saya menginstal tajuk pengembangan LDAP:

apt-get install libldb-dev

Ini menambahkan beberapa header ldap:

root@crunchbang:/usr/include# ls -la ldap*
-rw-r--r-- 1 root root  9466 Apr 23  2013 ldap_cdefs.h
-rw-r--r-- 1 root root  1814 Apr 23  2013 ldap_features.h
-rw-r--r-- 1 root root 65213 Apr 23  2013 ldap.h
-rw-r--r-- 1 root root  9450 Apr 23  2013 ldap_schema.h
-rw-r--r-- 1 root root  3468 Apr 23  2013 ldap_utf8.h

Ketika saya mengkonfigurasi dan referensi direktori:

./configure --with-ldap=/usr/include

Saya mendapatkan kesalahan ini:

...
checking for LDAP support... yes
checking for LDAP Cyrus SASL support... no
checking size of long int... 4
configure: error: Cannot find ldap libraries in /usr/include.
Shawn Welch
sumber
1
Bagaimana pertanyaan tentang mengkompilasi PHP di luar topik untuk kesalahan server? Apakah tidak kurang dari LIMA moderator yang benar-benar tidak menyadari bahwa PHP adalah "sistem teknologi informasi yang digunakan di mana-mana" di mana-mana dan bahwa para profesional TI biasanya ditugaskan untuk mengelolanya? Apakah mereka tidak menyadari bahwa menyusun perangkat lunak server adalah tugas Administrasi Sistem roti dan mentega? Tidak ada alasan yang sah untuk menutup pertanyaan ini dan itu menjadi "di luar topik" hanyalah absurd.
Goladus
@Goladus Terima kasih! Iya. Tidak yakin bagaimana ini BUKAN server terkait.
Shawn Welch

Jawaban:

25

Saya mengalami masalah ini mencoba untuk melibatkan ekstensi PHP dalam wadah Docker. Inilah yang harus saya lakukan:

  1. apt-get install libldb-dev libldap2-dev
  2. ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so \ && ln -s /usr/lib/x86_64-linux-gnu/liblber.so /usr/lib/liblber.so
Sorrell
sumber
Dockerfile ....... JALANKAN pembaruan apt-get && apt-get install -y \ libldap2-dev \ libldb-dev \ && ln -s /usr/lib/x86_64-linux-gnu/libldap.so / usr / lib / libldap.so \ && ln -s /usr/lib/x86_64-linux-gnu/liblber.so /usr/lib/liblber.so
Rich K.
8

Ini bekerja dengan baik untuk saya.

Instal pustaka LDAP:

apt-get install libldb-dev

Buat file tautan SO:

updatedb --prunepaths=/mnt
cd /usr/lib

if [ ! -L liblber-2.4.so.2 ];
then
    ln -s "$(locate liblber-2.4.so.2)"
fi

if [ ! -L liblber-2.4.so.2.8.3 ];
then
    ln -s "$(locate liblber-2.4.so.2.8.3)"
fi

if [ ! -L liblber.so ];
then
    ln -s "$(locate liblber.so)"
fi

if [ ! -L libldap.so ];
then
    ln -s "$(locate libldap.so)"
fi

if [ ! -L libldap_r.so ];
then
    ln -s "$(locate libldap_r.so)"
fi

Konfigurasikan PHP:

./configure --with-ldap=/usr

Shawn Welch
sumber
Terima kasih atas jawabannya. Untuk Ubuntu Trusty, setelah menginstal libldb-dev, berikut ini sudah cukup: sudo ln -s /usr/lib/i386-linux-gnu/liblber.so /usr/lib, sudo ln -s /usr/lib/i386-linux-gnu/libldap.so /usr/lib.
Wtower
Juga, pastikan Anda tidak menentukan lib64 librari path karena itu adalah cara yang pasti untuk memastikan kompilasi gagal. Ini adalah perbaikan yang sebenarnya! --with-libdir = lib64 \ // Inilah yang saya maksudkan
prog_24
3

Cara terbersih untuk melakukannya, menurut komentar ini dalam masalah gambar resmi PHP Docker, adalah menggunakan libldap2-dev(di Debian / Ubuntu) dan menelepon configuredengan --with-libdir=lib/x86_64-linux-gnu.

scy
sumber
1

PHP Versi 5.6.20 debian dan berbasis: su aptitude install libldb-dev ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so lalu, coba kompilasi

ZiTAL
sumber
1

Saya memiliki masalah yang sama dan tidak ada jawaban di atas yang membantu. Kemudian setelah beberapa penggalian ke dalam file konfigurasi PHP saya menemukan solusi yang berbeda.

1) Periksa lib directoriy yang Anda gunakan. Jika Anda menggunakan switch --with-libdir=lib64maka Anda harus memiliki libldap.sodan .sofile lainnya /usr/lib64. Jika Anda tidak menentukan libdir maka .sofile - file tersebut harus dalam /usr/lib. Anda dapat membuat symlink jika .sofile berada di direktori non-standar (seperti /usr/lib64) tetapi Anda tidak ingin menentukan libdir.

2) Gunakan sakelar --with-ldap=yes

Saya ingin tahu mengapa ini tidak didokumentasikan dalam bantuan konfigurasi.

eciii
sumber
Bagi saya --dengan-ldap = ya ditemukan.
Iago Leão
0

(Dengan asumsi Anda menggunakan Ubuntu) Silakan coba configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. Jika tidak membantu, sampaikan jawaban Anda dengan perincian tentang distro Linux mana yang Anda gunakan dan proyek mana yang Anda buat.

yrk
sumber
Sudah mencobanya. Tidak bekerja configure: error: Cannot find ldap libraries in /usr/lib.
Shawn Welch
Diperbarui jawabannya. Mohon ikuti.
tahun
Saya tidak berpikir --dengan-ldap-libs adalah pilihan. Saya sudah mencoba --with-ldap-dir dan sepertinya berhasil tetapi ketika saya mencoba menggunakan fungsi ldap php tidak berfungsi.
Shawn Welch