Задать вопрос
@Hfnas

Как исправить ошибку «requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.»?

Использую докер,
FROM php:7.4-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    libzip-dev\
    zip \
    unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip
RUN docker-php-ext-enable zip

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
    chown -R $user:$user /home/$user

# Set working directory
WORKDIR /var/www

USER $user

при `docker-compose exec app composer install`
выдает ошибку:
- server is locked to version dev-master and an update of this package was not requested.
    - server dev-master requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.
  Problem 2
    - phpoffice/phpspreadsheet is locked to version 1.25.2 and an update of this package was not requested.
    - phpoffice/phpspreadsheet 1.25.2 requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.


Даже пробовала
RUN apt-get install php-zip
Пробовала
RUN apt-get install php7.4-zip
вместо
RUN apt-get update && apt-get install -y \
    libzip-dev\
    zip 

RUN docker-php-ext-install  zip
RUN docker-php-ext-enable zip

:Пишет ошибку, см скрин.
675dc4cc2a16a532715980.png

Задача установить php7.4 и laravel 5.7 в докере

пробовала прописывать в local.ini
extension=zip

никак.
остальные разрешения установлены:
675dc7d303fca204762606.png
  • Вопрос задан
  • 81 просмотр
Подписаться 2 Простой Комментировать
Решения вопроса 1
karabanov
@karabanov Куратор тега Docker
Системный администратор
Попробовал собрать образ из представленного Dockerfile и проверить подключилось ли расширение:

docker build --build-arg user=user --build-arg uid=1000 --tag test .

... пропущено много буков ...

docker run --rm -it test:latest php -m | grep zip
zip

Да всё в порядке - расширение установилось.

PS
Образ крайне не оптимальный - весь мусор который генерируется во время установки из исходников не стёрт, кеши APT не стёрты, такой образ должен быть размером можт чуть больше 100 мегабайт. Я бы взял в качестве базового образа свежий Debian, подключил бы репозиторий с PHP и установил бы всё из готовых пакетов - это сильно ускорит сборку и позволит сделать образ меньше как минимум из-за того, что сборочному мусору неоткуда будет взяться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы