PHP-Konfiguration findet keine LDAP-Header-Bibliotheken [geschlossen]

9

Ich habe die LDAP-Entwicklungsheader installiert:

apt-get install libldb-dev

Dies fügte ein paar ldap-Header hinzu:

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

Wenn ich das Verzeichnis konfiguriere und referenziere:

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

Ich erhalte diesen Fehler:

...
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
quelle
1
Wie ist eine Frage zum Kompilieren von PHP außerhalb des Themas für Serverfehler? Sind sich nicht weniger als FÜNF Moderatoren wirklich nicht bewusst, dass PHP ein allgegenwärtiges "Informationstechnologiesystem, das in Geschäftsumgebungen verwendet wird", und dass IT-Experten häufig damit beauftragt sind, es zu verwalten? Ist ihnen nicht klar, dass das Kompilieren von Serversoftware eine grundlegende Aufgabe der Systemadministration ist? Es gibt keinen triftigen Grund, diese Frage zu schließen, und es ist einfach absurd, "nicht zum Thema" zu gehören.
Goladus
@ Goladus Danke! Ja. Ich bin mir nicht sicher, wie dies NICHT mit dem Server zusammenhängt.
Shawn Welch

Antworten:

25

Ich bin auf dieses Problem gestoßen, als ich versucht habe, PHP-Erweiterungen in einen Docker-Container einzubeziehen. Folgendes musste ich tun:

  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
Sauerampfer
quelle
Dockerfile ....... RUN apt-get update && 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

Das hat bei mir perfekt funktioniert.

Installieren Sie LDAP-Bibliotheken:

apt-get install libldb-dev

Erstellen Sie SO-Linker-Dateien:

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

Konfigurieren Sie PHP:

./configure --with-ldap=/usr

Shawn Welch
quelle
Danke für die Antwort. Für Ubuntu Trusty ist nach der Installation von libldb-dev Folgendes ausreichend: 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
Stellen Sie außerdem sicher, dass Sie den Pfad der lib64-Bibliotheken nicht angeben, da dies eine sichere Methode ist, um sicherzustellen, dass die Kompilierung fehlschlägt. Dies ist die eigentliche Lösung! --with-libdir = lib64 \ // Darauf beziehe ich mich
prog_24
3

Der sauberste Weg, dies zu tun, ist laut diesem Kommentar in den Ausgaben des offiziellen PHP Docker-Images die Verwendung libldap2-dev(in Debian / Ubuntu) und das Aufrufen configuremit --with-libdir=lib/x86_64-linux-gnu.

schüchtern
quelle
1

PHP Version 5.6.20 debian und basiert: su aptitude install libldb-dev ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so Versuchen Sie dann, es zu kompilieren

ZiTAL
quelle
1

Ich hatte das gleiche Problem und keine der obigen Antworten hat geholfen. Nachdem ich mich in der Konfigurationsdatei von PHP umgesehen hatte, fand ich eine andere Lösung.

1) Überprüfen Sie, welche lib-Direktive Sie verwenden. Wenn Sie den Schalter verwenden --with-libdir=lib64, sollten Sie die libldap.sound die anderen .soDateien in haben /usr/lib64. Wenn Sie kein libdir angeben .so, sollten sich die Dateien in befinden /usr/lib. Sie können Symlinks erstellen, wenn sich die .soDatei in einem nicht standardmäßigen Verzeichnis (wie /usr/lib64) befindet, Sie jedoch das libdir nicht angeben möchten.

2) Verwenden Sie den Schalter --with-ldap=yes

Ich frage mich, warum dies nicht in der Konfigurationshilfe dokumentiert ist.

eciii
quelle
Für mich --with-ldap = ja gefunden.
Iago Leão
0

(Vorausgesetzt, Sie sind auf Ubuntu) Bitte versuchen Sie es configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. Wenn dies nicht hilft, erweitern Sie Ihre Antwort bitte um Details darüber, welche Linux-Distribution Sie verwenden und welches Projekt Sie erstellen.

Jahr
quelle
Ich habe es versucht. Funktioniert nicht configure: error: Cannot find ldap libraries in /usr/lib.
Shawn Welch
Die Antwort wurde aktualisiert. Bitte Follow-up.
3.
Ich denke nicht --with-ldap-libs ist eine Option. Ich habe versucht --with-ldap-dir und es schien zu funktionieren, aber als ich versuchte, eine PHP-LDAP-Funktion zu verwenden, funktionierte es nicht.
Shawn Welch