Docker: Как установить расширение PHP 7.4 ext-http? - PullRequest
1 голос
/ 22 января 2020

Я хотел бы установить расширение ext-http, потому что у меня возникает эта ошибка при выполнении команды composer install в моем php-apache контейнере:

Запрошенное расширение PHP ext- http * отсутствует в вашей системе. Установите или активируйте расширение PHP http.

Мой Dockerfile:

ARG PHP_VERSION=""

FROM php:${PHP_VERSION}-apache

ENV COMPOSER_ALLOW_SUPERUSER=1

EXPOSE 80
WORKDIR /${PROJECT_DIRECTORY}

# git, unzip & zip are for composer
RUN apt-get update -qq && \
    apt-get install -qy \
    git \
    gnupg \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libicu-dev \
    libxml2-dev \
    wget \
    nano \
    unzip \
    zip && \
    curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# PHP Extensions
RUN docker-php-ext-install -j$(nproc) opcache pdo_mysql intl xml soap
ADD php/php.ini /usr/local/etc/php/conf.d/${PROJECT_DIRECTORY}.ini

# Apache
RUN a2enmod rewrite remoteip
ADD vhosts/vhost.conf /etc/apache2/sites-available/000-default.conf

У меня есть "ext-http": "*" в require узле моего composer.json.

Я пытался:

RUN docker - php -ext-install -j $ (npro c) opcache pdo_ mysql intl xml soap ext -http

И у меня есть эта ошибка:

Шаг 7/10: RUN docker - php -ext-install -j $ (npro c) opcache pdo_mysql intl xml soap ext-http ---> Запуск в 8ef2c127b632 ошибка: / usr / src / php / ext / ext-http не существует

использование: / usr / local / bin / docker - php -ext-install [-jN] ext-name [ext-name ...] ie: / usr / local / bin / docker - php -ext- установить gd mysqli / usr / local / bin / docker - php -ext-install pdo pdo_mysql / usr / local / bin / docker - php -ext-install -j5 gd mbstring mysqli pdo pdo_ mysql shmop

если требуются настраиваемые аргументы ./configure, см. docker - php -ext-configure

Возможные значения для ext-name: bcmath bz2 calendar ctype curl dba dom enchant exif ffi fileinfo фильтр ftp gd gettext gmp ha sh iconv imap intl json ldap mbstring mysqli oci8 odb c opcache pcntl pdo pdo_dblib pdo_firebird pdo_ mysql pdo_oci pdo_odb c pdo_flg plg pgl_pl_pl_pl_plg_pl_pl_pl_pl_pl_pl_pl_p_l_p_l_pl_p_l_p_l_p_l_p_l_ * * * * * *. простой xml snmp soap сокеты натрия spl стандартный sysvmsg sysvsem sysvshm tidy tokenizer xml xmlreader xmlrp c xmlwriter xsl zend_test zip

Некоторые из вышеуказанных модулей уже скомпилированы в PHP; пожалуйста, проверьте вывод "php -i", чтобы увидеть, какие модули уже загружены. ОШИБКА: не удалось создать службу 'apache': команда '/ bin / sh - c docker - php -ext-install -j $ (npro c) opcache pdo_ mysql intl xml soap ext-http 'возвратил ненулевой код: 1 Не удалось развернуть' Compose:. docker ': docker-compose процесс завершен с кодом выхода 1

Как можно ли установить это расширение, пожалуйста?

1 Ответ

0 голосов
/ 23 января 2020

Вы можете установить его через pecl. Расширение http также имеет зависимости .

RUN  docker-php-ext-install hash iconv \
&& pecl install raphf propro \
&& docker-php-ext-enable raphf propro \
&& pecl install pecl_http \
&& echo -e "extension=raphf.so\nextension=propro.so\nextension=http.so" > /usr/local/etc/php/conf.d/docker-php-ext-http.ini \
&& rm -rf /usr/local/etc/php/conf.d/docker-php-ext-raphf.ini \
&& rm -rf /usr/local/etc/php/conf.d/docker-php-ext-propro.ini 

Я получил вдохновение через https://hub.docker.com/r/realpaul/docker-php/dockerfile

...