如何在Docker php fpm alpine中安装LDAP



我该如何在dockerfile 中安装php-Ldap扩展

来自php:7.2-fpm-alpine

我尝试了以下

RUN docker-php-ext-configure ldap --prefix=/usr/local/php --with-ldap=/usr/lib/i386-linux-gnu
RUN docker-php-ext-install ldap

但是当我构建docker时,我得到错误消息

configure:错误:找不到ldap.h

错误:服务"php"无法构建:命令"/bin/sh-c docker php-ext-install-ldap"返回非零代码:1

PS:这是高山,所以"apt-get"在这里不起作用,而是"apk-add">

如果遇到configure:error:找不到ldap.h尝试在您基于Alpine的Dockerfile 中添加此行

RUN apk add ldb-dev libldap openldap-dev

您需要使用openldap-dev来获得ldap.h文件,以便使用docker-php-ext安装脚本安装ldap

像这样的东西有效:

FROM php:8.0.2-fpm-alpine
RUN apk update 
&& apk add --no-cache --virtual .build-dependencies-in-virtual-world openldap-dev 
&& docker-php-ext-install ldap 
&& docker-php-ext-enable  ldap 
&& apk del .build-dependencies-in-virtual-world

对我来说,我用这个作为我的Laravel项目:Laravel应用的我的Dockerfile

我不得不使用第5行,因为如果我不使用,我会得到这个:

未定义的常数"LdapRecord\Models\Attributes\LDAP_ESCAPE_FILTER">

这对我有效:

FROM php:7.4.9-fpm-alpine3.12

COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/
# Install PHP extensions
RUN install-php-extensions ldap

使用以下dockerfile修复:

FROM php:7.2-fpm-alpine
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# lumen packages
RUN apk add openldap-back-mdb
RUN apk add --update --virtual .build-deps autoconf g++ make zlib-dev curl-dev libidn2-dev libevent-dev icu-dev libidn-dev openldap libxml2-dev
RUN docker-php-ext-install intl soap
RUN docker-php-ext-install mbstring tokenizer mysqli pdo_mysql json hash iconv
RUN apk --update --no-cache add php7-ldap libldap php-ldap  openldap-clients openldap openldap-back-mdb
RUN apk add --no-cache ldb-dev
RUN 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
#RUN docker-php-ext-configure ldap --prefix=/usr/local/php --with-ldap=/usr/lib/libldap.so
#RUN docker-php-ext-install ldap
ARG DOCKER_PHP_ENABLE_LDAP
RUN echo -n "With ldap support:          " ; if [[ "${DOCKER_PHP_ENABLE_LDAP}" = "on" ]] ;      then echo "Yes"; else echo "No" ; fi && 
if [ -z ${DOCKER_USER_UID+x} ]; then echo "DOCKER_USER_UID is unset"; DOCKER_USER_UID=1000; else echo "DOCKER_USER_UID is set to '$DOCKER_USER_UID'"; fi && 
if [ -z ${DOCKER_USER_GID+x} ]; then echo "DOCKER_USER_GID is unset"; DOCKER_USER_GID=1000; else echo "DOCKER_USER_GID is set to '$DOCKER_USER_GID'"; fi
# Enable LDAP
RUN if [ "${DOCKER_PHP_ENABLE_LDAP}" != "off" ]; then 
# Dependancy for ldap 
apk add --update --no-cache 
libldap && 
# Build dependancy for ldap 
apk add --update --no-cache --virtual .docker-php-ldap-dependancies 
openldap-dev && 
docker-php-ext-configure ldap && 
docker-php-ext-install ldap && 
apk del .docker-php-ldap-dependancies && 
php -m; 
else 
echo "Skip ldap support"; 
fi
RUN pecl install raphf propro
RUN docker-php-ext-enable raphf propro
RUN pecl install pecl_http
RUN echo -e "extension=raphf.sonextension=propro.sonextension=iconv.sonextension=http.so" > /usr/local/etc/php/conf.d/docker-php-ext-http.ini
RUN rm -rf /usr/local/etc/php/conf.d/docker-php-ext-raphf.ini
RUN rm -rf /usr/local/etc/php/conf.d/docker-php-ext-propro.ini
RUN rm -rf /tmp/*
COPY ./app /var/www/html/
RUN chown -R www-data:www-data /var/www/html/
RUN chmod -R 755 /var/www/html/
WORKDIR /var/www/html/
RUN composer install

您可以尝试ldb-dev-alpine包。`

FROM php:7.2-fpm-alpine
RUN apk add --no-cache ldb-dev

PHP配置找不到LDAP头库

mac m2:

ldap --with-libdir=lib/aarch64-linux-gnu/

最新更新