猿问

如何在 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 时,我收到错误消息


配置:错误:找不到 ldap.h


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


PS:这里是高山地区,所以“apt-get”在这里不起作用,而是“apk add”


www说
浏览 247回答 4
4回答

德玛西亚99

如果您遇到配置:错误:找不到 ldap.h 尝试在基于 Alpine 的 Dockerfile 中添加此行RUN apk add ldb-dev libldap openldap-dev

慕标5832272

您需要使用 openldap-dev 来获取 ldap.h 文件,以便使用 docker-php-ext-install 脚本安装 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

慕姐4208626

这对我有用:FROM php:7.4.9-fpm-alpine3.12        COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/# Install PHP extensionsRUN install-php-extensions ldap

天涯尽头无女友

使用以下 dockerfile 修复:FROM php:7.2-fpm-alpine# Install composerRUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer# lumen packagesRUN apk add openldap-back-mdbRUN apk add --update --virtual .build-deps autoconf g++ make zlib-dev curl-dev libidn2-dev libevent-dev icu-dev libidn-dev openldap libxml2-devRUN docker-php-ext-install intl soapRUN docker-php-ext-install mbstring tokenizer mysqli pdo_mysql json hash iconvRUN apk --update --no-cache add php7-ldap libldap php-ldap  openldap-clients openldap openldap-back-mdbRUN apk add --no-cache ldb-devRUN 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 ldapARG DOCKER_PHP_ENABLE_LDAPRUN 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 LDAPRUN 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"; \    fiRUN pecl install raphf proproRUN docker-php-ext-enable raphf proproRUN pecl install pecl_httpRUN echo -e "extension=raphf.so\nextension=propro.so\nextension=iconv.so\nextension=http.so" > /usr/local/etc/php/conf.d/docker-php-ext-http.iniRUN rm -rf /usr/local/etc/php/conf.d/docker-php-ext-raphf.iniRUN rm -rf /usr/local/etc/php/conf.d/docker-php-ext-propro.iniRUN 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
随时随地看视频慕课网APP
我要回答