Configuração do PHP não localizando bibliotecas de cabeçalho LDAP [fechado]

9

Eu instalei os cabeçalhos de desenvolvimento LDAP:

apt-get install libldb-dev

Isso adicionou alguns cabeçalhos 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 eu configuro e faço referência ao diretório:

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

Eu recebo este erro:

...
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
fonte
1
Como é uma pergunta sobre compilar PHP fora de tópico para falha no servidor? Os CINCO moderadores realmente não sabem que o PHP é um "sistema de tecnologia da informação usado em ambientes de negócios" onipresente e que os profissionais de TI geralmente têm a tarefa de gerenciá-lo? Eles não percebem que a compilação de software de servidor é uma tarefa de Administração do Sistema que gera resultados? Não existe um motivo válido para encerrar esta questão e estar "fora de tópico" é simplesmente absurdo.
Goladus 15/10/19
@Goladus Thank you! Sim. Não tenho certeza de como isso NÃO está relacionado ao servidor.
Shawn Welch

Respostas:

25

Corri para esse problema tentando envolver as extensões PHP em um contêiner do Docker. Aqui está o que eu tinha que fazer:

  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
fonte
Dockerfile ....... EXECUTAR o 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

Isso funcionou para mim perfeitamente.

Instale bibliotecas LDAP:

apt-get install libldb-dev

Crie arquivos de vinculador 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

Configure o PHP:

./configure --with-ldap=/usr

Shawn Welch
fonte
Obrigado pela resposta. Para o Ubuntu Trusty, após a instalação do libldb-dev, o seguinte é 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 21/03/16
Além disso, verifique se você não está especificando o caminho das bibliotecas lib64, pois essa é uma maneira segura de garantir que a compilação falhe. Esta é a correção real! --with-libdir = lib64 \ // Isto é o que eu estou me referindo
prog_24 31/03
3

A maneira mais limpa de fazê-lo, de acordo com este comentário nas edições da imagem oficial do PHP Docker, é usando libldap2-dev(no Debian / Ubuntu) e ligando configurecom --with-libdir=lib/x86_64-linux-gnu.

assustador
fonte
1

Versão do 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 então, tente compilá-lo

ZiTAL
fonte
1

Eu tive esse mesmo problema e nenhuma das respostas acima ajudou. Depois de algumas pesquisas no arquivo de configuração do PHP, encontrei uma solução diferente.

1) Verifique qual diretório de lib você está usando. Se você usar a opção --with-libdir=lib64, deverá colocar os libldap.soe outros .soarquivos /usr/lib64. Se você não está especificando um libdir em seguida, os .soarquivos devem estar no /usr/lib. Você pode criar links simbólicos se o .soarquivo estiver em um diretório não padrão (como /usr/lib64), mas não desejar especificar o libdir.

2) Use o interruptor --with-ldap=yes

Eu me pergunto por que isso não está documentado na ajuda do configure.

eciii
fonte
Para mim --with-ldap = yes encontrado.
Iago Leão 27/11
0

(Supondo que você esteja no Ubuntu) Por favor, tente configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. Se isso não ajudar, estenda sua resposta com detalhes sobre qual distribuição Linux você usa e qual projeto está construindo.

yrk
fonte
Tentei. Não funciona configure: error: Cannot find ldap libraries in /usr/lib.
perfil completo de Shawn Welch
Atualizado a resposta. Por favor, acompanhe.
Yrk
Eu não acho que --with-ldap-libs é uma opção. Eu tentei --with-ldap-dir e parecia funcionar, mas quando tentei usar uma função php ldap, não funcionou.
Shawn Welch