Laradock: how to enable/install php7 ldap support extension?

12,395

Check this out:

https://github.com/docker-library/php/issues/75

Basically you need this in your php-fpm docker file:

RUN \
    apt-get update && \
    apt-get install libldap2-dev -y && \
    rm -rf /var/lib/apt/lists/* && \
    docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \
    docker-php-ext-install ldap
Share:
12,395
koalaok
Author by

koalaok

Software engineer polyglot with dev-ops. Sense of initiative and entrepreneurship. Reliable and strongly oriented to problem solving.

Updated on June 14, 2022

Comments

  • koalaok
    koalaok almost 2 years

    I have set up docker with laradock.

    I'm using the following package

    "adldap2/adldap2-laravel": "^2.1"
    

    I get the following error:

    Call to undefined function Adldap\ldap_explode_dn()
    

    Should I enter my docker workspace and try to install it?

    docker-compose exec  workspace bash
    

    How should I install it? Seems I can't find php7.0-ldap package from apt-get or apt-cache...

    Is it possible to enable it through docker-compose or by editing someway one of docker files? (php-fpm/Dockerfile-70 ?

    EDIT: (DockerFile-70 full contents with Solution provided)

    #
    #--------------------------------------------------------------------------
    # Image Setup
    #--------------------------------------------------------------------------
    #
    # To edit the 'php-fpm' base Image, visit its repository on Github
    #    https://github.com/LaraDock/php-fpm
    #
    # To change its version, see the available Tags on the Docker Hub:
    #    https://hub.docker.com/r/laradock/php-fpm/tags/
    #
    
    FROM laradock/php-fpm:7.0--1.2
    
    MAINTAINER Mahmoud Zalt <[email protected]>
    
    #
    #--------------------------------------------------------------------------
    # Mandatory Software's Installation
    #--------------------------------------------------------------------------
    #
    # Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....)
    # are installed on the base image 'laradock/php-fpm' image. If you want
    # to add more Software's or remove existing one, you need to edit the
    # base image (https://github.com/LaraDock/php-fpm).
    #
    
    #
    #--------------------------------------------------------------------------
    # Optional Software's Installation
    #--------------------------------------------------------------------------
    #
    # Optional Software's will only be installed if you set them to `true`
    # in the `docker-compose.yml` before the build.
    # Example:
    #   - INSTALL_ZIP_ARCHIVE=true
    #   - ...
    #
    
    #####################################
    # xDebug:
    #####################################
    
    ARG INSTALL_XDEBUG=false
    RUN if [ ${INSTALL_XDEBUG} = true ]; then \
        # Install the xdebug extension
        pecl install xdebug && \
        docker-php-ext-enable xdebug \
    ;fi
    
    # Copy xdebug configration for remote debugging
    COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
    
    #####################################
    # MongoDB:
    #####################################
    
    ARG INSTALL_MONGO=false
    RUN if [ ${INSTALL_MONGO} = true ]; then \
        # Install the mongodb extension
        pecl install mongodb && \
        docker-php-ext-enable mongodb \
    ;fi
    
    #####################################
    # ZipArchive:
    #####################################
    
    ARG INSTALL_ZIP_ARCHIVE=false
    RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
        # Install the zip extension
        pecl install zip && \
        docker-php-ext-enable zip \
    ;fi
    
    #####################################
    # PHP Memcached:
    #####################################
    
    ARG INSTALL_MEMCACHED=false
    RUN if [ ${INSTALL_MEMCACHED} = true ]; then \
        # Install the php memcached extension
        curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
        && mkdir -p memcached \
        && tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
        && ( \
            cd memcached \
            && phpize \
            && ./configure \
            && make -j$(nproc) \
            && make install \
        ) \
        && rm -r memcached \
        && rm /tmp/memcached.tar.gz \
        && docker-php-ext-enable memcached \
    ;fi
    
    #####################################
    # PHP Aerospike:
    #####################################
    
    ARG INSTALL_AEROSPIKE_EXTENSION=false
    ENV INSTALL_AEROSPIKE_EXTENSION ${INSTALL_AEROSPIKE_EXTENSION}
    # Copy aerospike configration for remote debugging
    COPY ./aerospike.ini /usr/local/etc/php/conf.d/aerospike.ini
    RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = true ]; then \
        # Install the php aerospike extension
    curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/luciano-jr/aerospike-client-php/archive/    master.tar.gz" \
        && mkdir -p aerospike-client-php \
        && tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \
        && ( \
            cd aerospike-client-php/src/aerospike \
            && phpize \
            && ./build.sh \
            && make install \
        ) \
        && rm /tmp/aerospike-client-php.tar.gz \
    ;fi
    
    #####################################
    # Opcache:
    #####################################
    ARG INSTALL_OPCACHE=false
    RUN if [ ${INSTALL_OPCACHE} = true ]; then \
        docker-php-ext-install opcache && \
        docker-php-ext-enable opcache \
    ;fi
    
    # Copy opcache configration
    COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini
    
    #####################################
    # LDAP:
    #####################################
    RUN \
        apt-get update && \
        apt-get install libldap2-dev -y && \
        #rm -rf /var/lib/apt/lists/* && \
        docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \
        docker-php-ext-install ldap
    
    
    
    #
    #--------------------------------------------------------------------------
    # Final Touch
    #--------------------------------------------------------------------------
    #
    
    ADD ./laravel.ini /usr/local/etc/php/conf.d
    ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
    
    RUN rm -r /var/lib/apt/lists/*
    
    RUN usermod -u 1000 www-data
    
    WORKDIR /var/www/laravel
    
    CMD ["php-fpm"]
    
    EXPOSE 9000
    
  • koalaok
    koalaok over 7 years
    I updated the php-fpm/Dockerfile-70 with the snippent. It seems rm -rf /var/lib/apt/lists/* && \ causes an error. That doesn't let me build php-fpm after edit:: rm: cannot remove '/var/lib/apt/lists/*': No such file or directory
  • ChadSikorra
    ChadSikorra over 7 years
    @koalaok You can safely remove that line, as it is just a cleanup tasks to keep the size down. Not too sure why it wouldn't work though. What does your full Dockerfile look like?
  • koalaok
    koalaok over 7 years
    It' s the common Dockerfile-70 in laradock git repo latest. Anyway I noticed that line is already present some rows below. "Final touch" . I'll paste Dockerfile 70 in my question as a edit - formatted