PHP configure ne trouve pas les bibliothèques d'en-tête LDAP [fermé]

9

J'ai installé les en-têtes de développement LDAP:

apt-get install libldb-dev

Cela a ajouté quelques en-têtes 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

Lorsque je configure et référence le répertoire:

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

Je reçois cette erreur:

...
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
la source
1
Comment est une question sur la compilation de PHP hors sujet pour une panne de serveur? Pas moins de CINQ modérateurs ignorent-ils vraiment que PHP est un "système de technologie de l'information utilisé dans les environnements commerciaux" et que les informaticiens sont généralement chargés de le gérer? Ne réalisent-ils pas que la compilation d'un logiciel serveur est une tâche d'administration système simplifiée? Il n'y a aucune raison valable de clore cette question et le fait d'être «hors sujet» est tout simplement absurde.
Goladus
@Goladus Merci! Oui. Je ne sais pas en quoi cela n'est PAS lié au serveur.
Shawn Welch

Réponses:

25

J'ai rencontré ce problème en essayant d'impliquer des extensions PHP dans un conteneur Docker. Voici ce que je devais faire:

  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
la source
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

Cela a parfaitement fonctionné pour moi.

Installez les bibliothèques LDAP:

apt-get install libldb-dev

Créez des fichiers de l'éditeur de liens 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

Configurer PHP:

./configure --with-ldap=/usr

Shawn Welch
la source
Merci d'avoir répondu. Pour Ubuntu Trusty, après avoir installé libldb-dev, ce qui suit est suffisant: 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
Assurez-vous également que vous ne spécifiez pas le chemin des bibliothèques lib64 car c'est un moyen infaillible de s'assurer que la compilation échoue. C'est la vraie solution! --with-libdir = lib64 \ // C'est à cela que je fais référence
prog_24
3

La manière la plus propre de le faire, selon ce commentaire dans les problèmes de l'image officielle PHP Docker, est d'utiliser libldap2-dev(dans Debian / Ubuntu) et d'appeler configureavec --with-libdir=lib/x86_64-linux-gnu.

scy
la source
1

PHP version 5.6.20 debian et based: su aptitude install libldb-dev ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so essayez ensuite de le compiler

ZiTAL
la source
1

J'ai eu ce même problème et aucune des réponses ci-dessus n'a aidé. Ensuite, après avoir creusé dans le fichier de configuration de PHP, j'ai trouvé une solution différente.

1) Vérifiez quelle librairie que vous utilisez. Si vous utilisez le commutateur, --with-libdir=lib64vous devez avoir le libldap.soet les autres .sofichiers dans /usr/lib64. Si vous ne spécifiez pas de libdir, les .sofichiers doivent se trouver /usr/lib. Vous pouvez créer des liens symboliques si le .sofichier se trouve dans un répertoire non standard (comme /usr/lib64) mais vous ne voulez pas spécifier le libdir.

2) Utilisez l'interrupteur --with-ldap=yes

Je me demande pourquoi cela n'est pas documenté dans l'aide à la configuration.

eciii
la source
Pour moi --with-ldap = yes found.
Iago Leão
0

(En supposant que vous êtes sur Ubuntu) Veuillez essayer configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. Si cela ne vous aide pas, veuillez étendre votre réponse avec des détails sur la distribution Linux que vous utilisez et le projet que vous construisez.

yrk
la source
Essayé. Ça ne marche pas. configure: error: Cannot find ldap libraries in /usr/lib.
Shawn Welch du
Mis à jour la réponse. Veuillez faire un suivi.
yrk
Je ne pense pas que --with-ldap-libs soit une option. J'ai essayé --with-ldap-dir et cela semblait fonctionner mais quand j'ai essayé d'utiliser une fonction php ldap cela n'a pas fonctionné.
Shawn Welch du