Laradock: как включить / установить расширение поддержки php7 ldap?

#php #laravel #docker #ldap #laradock

#php #ларавель #docker #ldap #laradock #laravel

Вопрос:

Я настроил docker с помощью laradock.

Я использую следующий пакет

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

Я получаю следующую ошибку:

 Call to undefined function Adldapldap_explode_dn()
  

Должен ли я войти в свое рабочее пространство docker и попытаться установить его?

 docker-compose exec  workspace bash
  

Как я должен его установить?
Кажется, я не могу найти пакет php7.0-ldap из apt-get или apt-cache…

Можно ли включить это через docker-compose или каким-либо образом отредактировав один из файлов docker? (php-fpm/Dockerfile-70 ?

РЕДАКТИРОВАТЬ: (DockerFile-70 полное содержимое с предоставленным решением)

 #
#--------------------------------------------------------------------------
# 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 <mahmoud@zalt.me>

#
#--------------------------------------------------------------------------
# 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 amp;amp; 
    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 amp;amp; 
    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 amp;amp; 
    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" 
    amp;amp; mkdir -p memcached 
    amp;amp; tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 
    amp;amp; ( 
        cd memcached 
        amp;amp; phpize 
        amp;amp; ./configure 
        amp;amp; make -j$(nproc) 
        amp;amp; make install 
    ) 
    amp;amp; rm -r memcached 
    amp;amp; rm /tmp/memcached.tar.gz 
    amp;amp; 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" 
    amp;amp; mkdir -p aerospike-client-php 
    amp;amp; tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 
    amp;amp; ( 
        cd aerospike-client-php/src/aerospike 
        amp;amp; phpize 
        amp;amp; ./build.sh 
        amp;amp; make install 
    ) 
    amp;amp; rm /tmp/aerospike-client-php.tar.gz 
;fi

#####################################
# Opcache:
#####################################
ARG INSTALL_OPCACHE=false
RUN if [ ${INSTALL_OPCACHE} = true ]; then 
    docker-php-ext-install opcache amp;amp; 
    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 amp;amp; 
    apt-get install libldap2-dev -y amp;amp; 
    #rm -rf /var/lib/apt/lists/* amp;amp; 
    docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ amp;amp; 
    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
  

Ответ №1:

Проверьте это:

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

В принципе, вам нужно это в вашем файле докера php-fpm:

 RUN 
    apt-get update amp;amp; 
    apt-get install libldap2-dev -y amp;amp; 
    rm -rf /var/lib/apt/lists/* amp;amp; 
    docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ amp;amp; 
    docker-php-ext-install ldap
  

Комментарии:

1. Я обновил php-fpm / Dockerfile-70 с помощью сниппента. Кажется, rm -rf /var/lib/apt/lists/* amp;amp; вызывает ошибку. Это не позволяет мне создавать php-fpm после редактирования:: rm: не удается удалить ‘/var /lib /apt /lists /*’: Нет такого файла или каталога

2. @koalaok Вы можете безопасно удалить эту строку, так как это просто задача очистки, чтобы уменьшить размер. Не совсем уверен, почему это не сработает. Как выглядит ваш полный файл Dockerfile?

3. Это обычный Dockerfile-70 в последней версии репозитория laradock git. В любом случае, я заметил, что эта строка уже присутствует в нескольких строках ниже. «Последний штрих». Я вставлю Dockerfile 70 в свой вопрос в формате редактирования