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 외부 주제를 컴파일 하는 방법에 대한 질문은 어떻습니까? FIVE 중재자보다 PHP가 유비쿼터스 한 "비즈니스 환경에서 사용되는 정보 기술 시스템"이며 IT 전문가가 일반적으로 PHP를 관리해야한다는 사실을 모르고 있습니까? 서버 소프트웨어 컴파일이 빵과 버터 시스템 관리 작업이라는 것을 모르십니까? 이 질문을 끝내야 할 정당한 이유가 없으며 "주제를 벗어난"것은 터무니없는 말입니다.
Goladus

@Goladus 감사합니다! 예. 이것이 서버와 어떻게 관련이 없는지 확실하지 않습니다.
Shawn Welch

답변:


25

Docker 컨테이너와 관련된 PHP 확장을 얻으 려고이 문제가 발생했습니다. 내가해야 할 일은 다음과 같습니다.

  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 ....... apt-get 업데이트 실행 및 apt-get 설치 -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

이것은 나를 위해 완벽하게 작동했습니다.

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 라이브러리 경로를 지정하지 않아야합니다. lib64 라이브러리 경로는 컴파일 실패를 확인하는 확실한 방법입니다. 이것은 실제 수정입니다! --with-libdir = lib64 \ // 이것은 내가 말하는 것입니다
prog_24

3

공식 PHP Docker 이미지 문제에 대한 이 의견 에 따르면 가장 깨끗한 방법 은 libldap2-dev(데비안 / 우분투에서)을 사용하고 호출하는 것 configure입니다 --with-libdir=lib/x86_64-linux-gnu.


1

PHP 버전 5.6.20 데비안 기반 : su aptitude install libldb-dev ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so 컴파일을 시도하십시오.


1

나는이 같은 문제가 있었고 위의 답변 중 어느 것도 도움이되지 못했습니다. 그런 다음 PHP의 구성 파일을 파고 들자 다른 해결책을 찾았습니다.

1) 사용중인 lib director를 확인하십시오. 스위치 --with-libdir=lib64를 사용하는 경우 libldap.so및에 다른 .so파일 이 있어야합니다 /usr/lib64. libdir을 지정하지 않으면 .so파일은에 있어야합니다 /usr/lib. .so파일이 (와 같은 /usr/lib64) 비표준 디렉토리에 있지만 libdir을 지정하지 않으려 는 경우 심볼릭 링크를 만들 수 있습니다 .

2) 스위치를 사용하십시오 --with-ldap=yes

이것이 왜 구성 도움말에 설명되어 있지 않은지 궁금합니다.


나를 위해 --with-ldap = yes를 찾았습니다.
Iago Leão

0

(우분투에 있다고 가정)을 시도하십시오 configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. 도움이되지 않는다면, 어떤 Linux 배포판을 사용하고 있고 어떤 프로젝트를 빌드하고 있는지에 대한 세부 사항으로 답변을 확장하십시오.


그것을 시도했다. 작동하지 않습니다. configure: error: Cannot find ldap libraries in /usr/lib.
Shawn Welch

답변을 업데이트했습니다. 후속 조치를 취하십시오.
yrk

--with-ldap-libs가 옵션이라고 생각하지 않습니다. --with-ldap-dir을 시도했지만 작동하는 것 같았지만 PHP ldap 함수를 사용하려고 시도하면 작동하지 않았습니다.
Shawn Welch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.