как установить расширение zip в доке php: 5.4-apache - PullRequest
0 голосов
/ 04 апреля 2019

Задача

Я хочу настроить докерскую среду разработки для приложения PHP. Эта среда должна имитировать производственный сервер.

Это приложение хочет экспортировать файл xlsx и выдает Fatal error: Class 'ZipArchive' not found in /var/www/html/lib/xlsxwriter.class.php on line 95

Любая попытка установить расширение zip для PHP в моем контейнере Docker не удалась

Первая попытка

#chose the php version here
FROM php:5.4-apache

RUN docker-php-ext-install pdo pdo_mysql mysqli mysql zip

# https://stackoverflow.com/questions/49907308/installing-xdebug-in-docker
# this is for php 7
#RUN yes | pecl install xdebug \
#    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
#    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
#    && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini

RUN yes | pecl install xdebug-2.4.1 \
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini


RUN usermod -u 431 www-data

Я получаю configure: error: zip support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located

вторая попытка

Я добавил

RUN docker-php-ext-configure zip --with-zlib-dir=/usr/src/php/ext/zip/ \
    && docker-php-ext-install pdo pdo_mysql mysqli mysql zip

но получил configure: error: Can not find zlib headers under "/usr/src/php/ext/zip/"

третья попытка

RUN apt-get install libzip /
  && pecl channel-update pecl.php.net && pecl install  zip

оканчивается на

configure: error: Please reinstall the libzip distribution
ERROR: `/tmp/pear/temp/zip/configure' failed

другие попытки

RUN apt-get update && apt-get install -y zip libzip2 \
  && docker-php-ext-configure zip --with-libzip \
  && docker-php-ext-install zip

W: Failed to fetch http://httpredir.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages 404 Not Found [IP: 151.101.12.204 80]

1 Ответ

2 голосов
/ 06 апреля 2019

С помощью @yosifkit я нашел решение (https://github.com/docker-library/php/issues/748#issuecomment-480449743)

просто для справки: вот мои докер-файлы. Я уверен, что они могут быть оптимизированы, но они работают для моего проекта.

Это для php5.4: даже если php5.4 он устарел, но он мне нужен для обслуживания, и поэтому я хотел использовать docker для получения работающей среды.

FROM php:5.4-apache

RUN a2enmod rewrite

RUN sed -i '/jessie-updates/d' /etc/apt/sources.list  # Now archived

RUN docker-php-ext-install pdo pdo_mysql mysqli mysql

RUN yes | pecl install xdebug-2.4.1 \
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini

RUN usermod -u 431 www-data

RUN set -eux; apt-get update; apt-get install -y libzip-dev zlib1g-dev; docker-php-ext-install zip

для php7.3

#chose the php version here
# FROM php:7.0-apache
FROM php:7.3-apache-stretch

RUN a2enmod rewrite

RUN docker-php-ext-install pdo pdo_mysql mysqli

RUN yes | pecl install xdebug-2.7.0 \
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini

RUN usermod -u 431 www-data

RUN set -eux; apt-get update; apt-get install -y libzip-dev zlib1g-dev; docker-php-ext-install zip

...