Amazon- linux -extras PHP 7.4 репо отсутствует php -zip расширение - PullRequest
1 голос
/ 20 марта 2020

Так что, очевидно, кто-то забыл о расширении php -zip в AWS. Для Amazon Linux 2 в репозитории amazon- linux -extras php7 .4 отсутствует расширение php -zip. Кто-нибудь знает, как установить расширение php -zip? Это очень важно, так как многим библиотекам требуется это расширение.

Я пробовал через Pecl безуспешно. Похоже, что базовые пакеты в Amazon Linux 2 несовместимы с методом установки Pecl.

/bin/sh /var/tmp/pear-build-defaultuserQfyCvq/zip-1.13.5/libtool --mode=compile cc  -I. -I/var/tmp/zip -DPHP_ATOM_INC -I/var/tmp/pear-build-defaultuserQfyCvq/zip-1.13.5/include -I/var/tmp/pear-build-defaultuserQfyCvq/zip-1.13.5/main -I/var/tmp/zip -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/var/tmp/zip/lib -I/var/tmp/zip/php7  -DHAVE_CONFIG_H  -g -O2   -c /var/tmp/zip/php7/php_zip.c -o php7/php_zip.lo
libtool: compile:  cc -I. -I/var/tmp/zip -DPHP_ATOM_INC -I/var/tmp/pear-build-defaultuserQfyCvq/zip-1.13.5/include -I/var/tmp/pear-build-defaultuserQfyCvq/zip-1.13.5/main -I/var/tmp/zip -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/var/tmp/zip/lib -I/var/tmp/zip/php7 -DHAVE_CONFIG_H -g -O2 -c /var/tmp/zip/php7/php_zip.c  -fPIC -DPIC -o php7/.libs/php_zip.o
/var/tmp/zip/php7/php_zip.c: In function 'php_zip_pcre'

ОБНОВЛЕНИЕ: метод Pecl работает следующим образом:

yum install php-devel* gcc libzip php-libzip libzip-devel zlip zip php-pear
pecl install zip

Однако на данный момент от идеального метода для любых производственных серверов. Все еще ожидаете на AWS, чтобы сделать это доступным как предварительно скомпилированный двоичный файл.

1 Ответ

1 голос
/ 21 марта 2020

Самый простой способ установить это - просто отказаться от amazon- linux -extras php7 .4 и использовать репозитории EPEL / REMI, пока Amazon не добавит расширение. И я не считаю, что они когда-либо будут, потому что это было проблемой на некоторое время.

Возможно, вам удастся добиться того, чтобы это работало с помощью Pecl и большого количества консистентной смазки, вы также будете раздувать вашу систему всеми видами дополнительных библиотек, таких как G CC, Make, libzip et c ...

Вот как собрать docker контейнер, используя Amazon Linux 2 с Epel и Remi:

FROM amazonlinux:latest

ENTRYPOINT /opt/remi/php74/root/usr/sbin/php-fpm --nodaemonize

ENV TERM=xterm-256color
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV COMPOSER_HOME=/var/www/html
ENV PATH=$PATH:vendor/bin:/usr/local/bin:/opt/remi/php74/root/usr/bin

# Grab node RPM and enable Epel and Remi repos
RUN curl -sL https://rpm.nodesource.com/setup_12.x | bash - \
 && yum install -y \
 https://rpms.remirepo.net/enterprise/remi-release-7.rpm \
 https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
 yum-utils \
 && yum-config-manager enable epel \
 && yum-config-manager enable remi

RUN yum install -y \
    ruby \
    nodejs \
    php74-php \
    php74-php-fpm \
    php74-php-common \
    php74-php-cli \
    php74-php-json \
    php74-php-process \
    php74-php-xml \
    php74-php-gd \
    php74-php-gmp \
    php74-php-mysqlnd \
    php74-php-mbstring \
    php74-php-opcache \
    php74-php-pecl-zip \
    python2-pip

# Install some common dev tools on the host
RUN yum install -y \
    which \
    telnet \
    vim

# Install setup tools and AWS cli
RUN pip install setuptools awscli

# Install composer
RUN curl -sS https://getcomposer.org/installer | php && chmod 755 composer.phar && mv composer.phar /usr/local/bin/composer

# Install configuration files
COPY php-fpm/php.ini /etc/opt/remi/php74/php.ini
COPY php-fpm/www.conf /etc/opt/remi/php74/php-fpm.d/www.conf
COPY php-fpm/php-fpm.conf /etc/opt/remi/php74/php-fpm.conf

# Create folder php fpm logs we want to have log files in standard location
RUN mkdir /var/log/php-fpm

# Create user that PHP-FPM runs under
RUN groupadd php-fpm && useradd php-fpm --system --no-create-home -g php-fpm

# Give us nice prompt so we know which container we are on
ENV PS1='php-fpm \w '
...