Configuración de PHP que no encuentra bibliotecas de encabezado LDAP [cerrado]

9

Instalé los encabezados de desarrollo LDAP:

apt-get install libldb-dev

Esto agregó algunos encabezados 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

Cuando configuro y hago referencia al directorio:

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

Me sale este error:

...
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
fuente
1
¿Cómo es una pregunta sobre cómo compilar PHP fuera de tema para la falla del servidor? ¿No son menos que CINCO moderadores realmente conscientes de que PHP es un "sistema de tecnología de la información omnipresente utilizado en entornos empresariales" y que los profesionales de TI tienen la tarea común de administrarlo? ¿No se dan cuenta de que compilar software de servidor es una tarea general de administración del sistema? No hay una razón válida para cerrar esta pregunta y estar "fuera de tema" es simplemente absurdo.
Goladus
@Goladus ¡Gracias! Si. No estoy seguro de cómo esto NO está relacionado con el servidor.
Shawn Welch

Respuestas:

25

Me encontré con este problema tratando de involucrar las extensiones PHP en un contenedor Docker. Esto es lo que tuve que hacer:

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

Esto funcionó para mí perfectamente.

Instalar bibliotecas LDAP:

apt-get install libldb-dev

Crear archivos de enlace 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

Configurar PHP:

./configure --with-ldap=/usr

Shawn Welch
fuente
Gracias por la respuesta. Para Ubuntu Trusty, después de instalar libldb-dev, lo siguiente es suficiente: 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
Además, asegúrese de no especificar la ruta de las bibliotecas lib64, ya que es una forma segura de asegurarse de que la compilación falla. Esta es la solución real! --with-libdir = lib64 \ // Esto es a lo que me refiero
prog_24
3

La forma más limpia de hacerlo, de acuerdo con este comentario en los temas de la imagen oficial de PHP Docker, es usar libldap2-dev(en Debian / Ubuntu) y llamar configurecon --with-libdir=lib/x86_64-linux-gnu.

scy
fuente
1

Versión de PHP 5.6.20 debian y basado: su aptitude install libldb-dev ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so luego, intente compilarlo

ZiTAL
fuente
1

Tuve este mismo problema y ninguna de las respuestas anteriores ayudó. Luego, después de profundizar en el archivo de configuración de PHP, encontré una solución diferente.

1) Verifique qué director de biblioteca está utilizando. Si usa el interruptor, --with-libdir=lib64entonces debería tener el libldap.soy los otros .soarchivos /usr/lib64. Si no está especificando un libdir, los .soarchivos deberían estar en /usr/lib. Puede crear enlaces simbólicos si el .soarchivo está en un directorio no estándar (como /usr/lib64) pero no desea especificar el libdir.

2) Usa el interruptor --with-ldap=yes

Me pregunto por qué esto no está documentado en la ayuda de configuración.

eciii
fuente
Para mí --with-ldap = yes encontrado.
Iago Leão
0

(Asumiendo que estás en Ubuntu) Por favor, inténtalo configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. Si no ayuda, extienda su respuesta con detalles sobre qué distribución de Linux usa y qué proyecto está construyendo.

yrk
fuente
Lo intenté. No funciona configure: error: Cannot find ldap libraries in /usr/lib.
Shawn Welch
Se actualizó la respuesta. Por favor sigue.
yrk
No creo que --with-ldap-libs sea una opción. Intenté --with-ldap-dir y parecía funcionar, pero cuando intenté usar una función php ldap no funcionó.
Shawn Welch