Configurazione di PHP che non trova le librerie di intestazione LDAP [chiuso]


9

Ho installato le intestazioni di sviluppo LDAP:

apt-get install libldb-dev

Ciò ha aggiunto alcune intestazioni di 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

Quando configuro e faccio riferimento alla directory:

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

Ottengo questo errore:

...
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.

1
Come è una domanda sulla compilazione di PHP off-topic per errore del server? Nient'altro che CINQUE moderatori sono davvero inconsapevoli del fatto che PHP è un onnipresente "sistema informatico utilizzato in ambienti aziendali" e che i professionisti IT sono comunemente incaricati di gestirlo? Non si rendono conto che la compilazione del software server è un'attività di amministrazione del sistema bread-and-butter? Non esiste un motivo valido per chiudere questa domanda ed essere "fuori tema" è assolutamente assurdo.
Goladus,

@Goladus Grazie! Sì. Non sono sicuro di come questo NON sia correlato al server.
Shawn Welch,

Risposte:


25

Ho riscontrato questo problema nel tentativo di coinvolgere le estensioni PHP in un contenitore Docker. Ecco cosa dovevo fare:

  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

Dockerfile ....... ESEGUI 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

Questo ha funzionato perfettamente per me.

Installa le librerie LDAP:

apt-get install libldb-dev

Creare file linker 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

Configura PHP:

./configure --with-ldap=/usr


Grazie per la risposta. Per Ubuntu Trusty, dopo aver installato libldb-dev, è sufficiente quanto segue: 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,

Inoltre, assicurati di non specificare il percorso delle librerie lib64 poiché questo è un modo sicuro per assicurarsi che la compilazione fallisca. Questa è la soluzione reale! --with-libdir = lib64 \ // Questo è ciò a cui mi riferisco
prog_24

3

Il modo più pulito per farlo, secondo questo commento nei problemi dell'immagine Docker PHP ufficiale, è usare libldap2-dev(in Debian / Ubuntu) e chiamare configurecon --with-libdir=lib/x86_64-linux-gnu.


1

Versione PHP 5.6.20 debian e based: su aptitude install libldb-dev ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so quindi, prova a compilarlo


1

Ho avuto lo stesso problema e nessuna delle risposte precedenti mi ha aiutato. Poi, dopo aver scavato nel file di configurazione di PHP, ho trovato una soluzione diversa.

1) Controlla quale direzione lib stai usando. Se si utilizza l'opzione, --with-libdir=lib64è necessario disporre di libldap.soe gli altri .sofile /usr/lib64. Se non si specifica un libdir, i .sofile dovrebbero essere presenti /usr/lib. È possibile creare collegamenti simbolici se il .sofile si trova in una directory non standard (come /usr/lib64) ma non si desidera specificare libdir.

2) Utilizzare l'interruttore --with-ldap=yes

Mi chiedo perché questo non sia documentato nella guida di configurazione.


Per me --with-ldap = yes trovato.
Iago Leão,

0

(Supponendo che tu sia su Ubuntu) Prova configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. Se non aiuta, estendi la tua risposta con i dettagli su quale distribuzione Linux usi e quale progetto stai realizzando.


Provato. Non funziona configure: error: Cannot find ldap libraries in /usr/lib.
Shawn Welch,

Aggiornato la risposta. Per favore follow-up.
anno

Non credo che l'opzione -with-ldap-libs sia un'opzione. Ho provato --with-ldap-dir e sembrava funzionare ma quando ho provato ad usare una funzione php ldap non ha funzionato.
Shawn Welch,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.