Как установить PHP Extensionson SourceGuardian на изображение докера wordpress?

Я использую докер для запуска Wordpress на моей локальной машине. Когда я хочу активировать Elementor Pro на своем сайте WordPress, я получаю эту ошибку:

PHP script '/var/www/html/wp-content/plugins/elementor-pro/abzarwp/abzarwp.php' is protected by SourceGuardian and requires a SourceGuardian loader 'ixed.7.2.lin' to be installed.

1) Click here to download the required 'ixed.7.2.lin' loader from the SourceGuardian site
2) Install the loader to /usr/local/lib/php/extensions/no-debug-non-zts-20170718
3) Edit and add 'extension=ixed.7.2.lin' directive
4) Restart the web server

Мой docker-composer.yml вот такой:

version: "3.8"

services:
  # Wordpress
  wordpress:
    depends_on:
      - db
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: poshasin_wp
    ports:
      - "8081:80"
    restart: always
    volumes:
      - ./wordpress:/var/www/html
      - ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
    networks:
      - poshasin_wp_net

    # ...

и мой wordpress Dockerfile выглядит так:

FROM wordpress:php7.2-apache

RUN apt-get update \
    && apt-get -y --no-install-recommends install wget \
    && rm -rf /var/lib/apt/lists/*

Теперь, как я могу решить эту проблему? Я имею в виду, как я могу установить SourceGuardian в образ докера WordPress?


person Mohammad Ali Amini    schedule 24.09.2020    source источник
comment
В Docker сначала вам нужно установить это расширение, чтобы оно было доступно в php.ini. Вы делаете то же самое?   -  person aviboy2006    schedule 24.09.2020
comment
Привет @ aviboy2006, нет. Как мне это сделать?   -  person Mohammad Ali Amini    schedule 24.09.2020
comment
linuxpitstop.com/ сначала добавьте ту же команду в докер после ваша команда RUN   -  person aviboy2006    schedule 24.09.2020
comment
github.com/davidalger/docker-images-php/ blob/master/fpm-loaders/ см. этот Dockerfile для справки   -  person aviboy2006    schedule 24.09.2020
comment
@ aviboy2006, в моем контейнере нет пути /etc/php7.2/mods-available/sourceguardian.conf. Что я должен делать?   -  person Mohammad Ali Amini    schedule 24.09.2020
comment
Попробуйте второй вариант, которым я поделился. Проверьте, может ли путь вашей версии php отличаться.   -  person aviboy2006    schedule 24.09.2020
comment
@ aviboy2006, во втором варианте я получил эту ошибку: /bin/sh: 1: cannot create /etc/php.d/15-sourceguardian.ini: Directory nonexistent. Я добавил эту строку mkdir -p /etc/php.d/, но моя проблема не решилась. Что мне теперь делать?   -  person Mohammad Ali Amini    schedule 24.09.2020


Ответы (1)


Я обновляю свой Wordpress Dockerfile следующим образом:

FROM wordpress:php7.2-apache

# Install and enable Source Gaurdian loader
RUN PHP_VERSION=$(php -v | head -n1 | cut -d' ' -f2 | cut -d. -f1-2) \
    && mkdir -p /tmp/sourceguardian \
    && cd /tmp/sourceguardian \
    && curl -Os https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz \
    && tar xzf loaders.linux-x86_64.tar.gz \
    && cp ixed.${PHP_VERSION}.lin "$(php -i | grep '^extension_dir =' | cut -d' ' -f3)/sourceguardian.so" \
    && echo "extension=sourceguardian.so" > /usr/local/etc/php/conf.d/15-sourceguardian.ini \
    && rm -rf /tmp/sourceguardian

Теперь все идеально!

person Mohammad Ali Amini    schedule 24.09.2020
comment
отличный. какие дополнительные изменения вы внесли? - person aviboy2006; 24.09.2020
comment
Привет @ aviboy2006 спасибо за помощь. Я изменил эту строку echo "extension=sourceguardian.so" > /etc/php.d/15-sourceguardian.ini на echo "extension=sourceguardian.so" > /usr/local/etc/php/conf.d/15-sourceguardian.ini - person Mohammad Ali Amini; 24.09.2020
comment
То, какая ссылка верна, только вам нужно проверить путь - person aviboy2006; 24.09.2020
comment
Да! Я только изменил путь. - person Mohammad Ali Amini; 24.09.2020