Cấu hình PHP không tìm thấy các thư viện tiêu đề LDAP [đã đóng]


9

Tôi đã cài đặt các tiêu đề phát triển LDAP:

apt-get install libldb-dev

Điều này đã thêm một vài tiêu đề 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

Khi tôi cấu hình và tham chiếu thư mục:

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

Tôi nhận được lỗi này:

...
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
Làm thế nào là một câu hỏi về việc biên dịch PHP ngoài chủ đề cho lỗi máy chủ? Có phải không ít hơn những người điều hành FIVE thực sự không biết rằng PHP là một "hệ thống công nghệ thông tin phổ biến được sử dụng trong môi trường kinh doanh" và các chuyên gia CNTT thường được giao nhiệm vụ quản lý nó? Họ không nhận ra rằng biên dịch phần mềm máy chủ là một nhiệm vụ Quản trị hệ thống bánh mì? Không có lý do chính đáng để đóng câu hỏi này và nó là "lạc đề" chỉ là vô lý.
Goladus

@Goladus Cảm ơn bạn! Đúng. Không chắc làm thế nào điều này KHÔNG liên quan đến máy chủ.
Shawn Welch

Câu trả lời:


25

Tôi gặp vấn đề này khi cố gắng để các phần mở rộng PHP tham gia vào một container Docker. Đây là những gì tôi đã phải làm:

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

8

Điều này làm việc cho tôi hoàn hảo.

Cài đặt thư viện LDAP:

apt-get install libldb-dev

Tạo tập tin liên kết 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

Cấu hình PHP:

./configure --with-ldap=/usr


Cảm ơn câu trả lời. Đối với Ubuntu Trusty, sau khi cài đặt libldb-dev, sau đây là đủ: 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

Ngoài ra, hãy chắc chắn rằng bạn không chỉ định đường dẫn thư viện lib64 vì đó là cách chắc chắn để đảm bảo việc biên dịch thất bại. Đây là sửa chữa thực tế! --with-libdir = lib64 \ // Đây là những gì tôi đang đề cập đến
prog_24

3

Cách sạch nhất để làm điều đó, theo nhận xét này trong các vấn đề của hình ảnh Docker PHP chính thức, là sử dụng libldap2-dev(trong Debian / Ubuntu) và gọi configurevới --with-libdir=lib/x86_64-linux-gnu.


1

Phiên bản PHP 5.6.20 debian và dựa: su aptitude install libldb-dev ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so sau đó, hãy thử biên dịch nó


1

Tôi đã có vấn đề tương tự và không có câu trả lời nào ở trên giúp được. Sau đó, sau khi đào sâu vào tệp cấu hình của PHP, tôi đã tìm thấy một giải pháp khác.

1) Kiểm tra lib mà bạn đang sử dụng. Nếu bạn sử dụng công tắc --with-libdir=lib64thì bạn nên có libldap.sovà các .sotệp khác trong /usr/lib64. Nếu bạn không chỉ định libdir thì các .sotệp sẽ nằm trong /usr/lib. Bạn có thể tạo liên kết tượng trưng nếu .sotệp nằm trong thư mục không chuẩn (như /usr/lib64) nhưng bạn không muốn chỉ định libdir.

2) Sử dụng công tắc --with-ldap=yes

Tôi tự hỏi tại sao điều này không được ghi lại trong phần trợ giúp cấu hình.


Đối với tôi --with-ldap = có tìm thấy.
Iago Leão

0

(Giả sử bạn đang sử dụng Ubuntu) Hãy thử configure --with-ldap-libs=/usr/lib/i386-linux-gnu/. Nếu không có ích, vui lòng mở rộng câu trả lời của bạn với các chi tiết về việc bạn sử dụng bản phân phối Linux nào và dự án nào bạn đang xây dựng.


Thử nó. Không hoạt động. configure: error: Cannot find ldap libraries in /usr/lib.
Shawn Welch

Cập nhật câu trả lời. Xin vui lòng theo dõi.
yrk

Tôi không nghĩ --with-ldap-libs là một lựa chọn. Tôi đã thử --with-ldap-dir và nó dường như hoạt động nhưng khi tôi thử sử dụng chức năng php ldap thì nó không hoạt động.
Shawn Welch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.