PHP настроить не найти библиотеки заголовков LDAP [закрыто]

9

Я установил заголовки разработки LDAP:

apt-get install libldb-dev

Это добавило несколько заголовков 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

Когда я настраиваю и ссылаюсь на каталог:

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

Я получаю эту ошибку:

...
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
Как вопрос о компиляции PHP не по теме для сбоя сервера? Неужели не менее пяти модераторов действительно не знают, что PHP - это повсеместная «система информационных технологий, используемая в бизнес-средах» и что ИТ-специалистам обычно поручено управлять ею? Разве они не понимают, что компиляция серверного программного обеспечения - это задача системного администрирования. Нет веских оснований для закрытия этого вопроса, и его «не по теме» просто абсурдно.
Голадус
@Goladus Спасибо! Да. Не уверен, как это НЕ связано с сервером.
Шон Уэлч

Ответы:

25

Я столкнулся с этой проблемой, пытаясь включить расширения PHP в контейнер Docker. Вот что я должен был сделать:

  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 ....... 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
Рич К.
8

Это сработало для меня отлично.

Установите библиотеки LDAP:

apt-get install libldb-dev

Создайте файлы компоновщика 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

Настройте PHP:

./configure --with-ldap=/usr

Шон Уэлч
источник
Спасибо за ответ. Для Ubuntu Trusty после установки libldb-dev достаточно следующего: 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
Также убедитесь, что вы не указываете путь к библиотекам lib64, так как это верный способ убедиться, что компиляция не удалась. Это фактическое исправление! --with-libdir = lib64 \ // Об этом я и говорю
prog_24
3

Согласно этому комментарию в выпусках официального образа PHP Docker, самый чистый способ сделать это - использовать libldap2-dev(в Debian / Ubuntu) и вызывать configureс помощью --with-libdir=lib/x86_64-linux-gnu.

SCY
источник
1

Версия PHP 5.6.20 Debian и основана на: su aptitude install libldb-dev ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so затем попробуйте скомпилировать его

ZiTAL
источник
1

У меня была такая же проблема, и ни один из ответов выше не помог. Затем, покопавшись в файле конфигурации PHP, я нашел другое решение.

1) Проверьте, какой каталог lib вы используете. Если вы используете переключатель, --with-libdir=lib64то вы должны иметь libldap.soи другие .soфайлы в /usr/lib64. Если вы не указываете libdir, то .soфайлы должны быть в /usr/lib. Вы можете создавать символические ссылки, если .soфайл находится в нестандартном каталоге (например /usr/lib64), но вы не хотите указывать libdir.

2) Используйте переключатель --with-ldap=yes

Интересно, почему это не задокументировано в справке по настройке?

eciii
источник
Для меня --with-ldap = yes найдено.
Яго Леан
0

(Предполагая, что вы находитесь в Ubuntu) Пожалуйста, попробуйте configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. Если это не помогло, пожалуйста, дополните свой ответ подробностями о том, какой дистрибутив Linux вы используете и какой проект создаете.

yrk
источник
Попробовал это. Не работает configure: error: Cannot find ldap libraries in /usr/lib.
Шон Уэлч
Обновил ответ. Пожалуйста, следуйте до.
'18
Я не думаю, что --with-ldap-libs - вариант. Я попытался --with-ldap-dir, и это, казалось, работало, но когда я попытался использовать функцию php ldap, это не сработало.
Шон Уэлч