php - 使用 Docker 找不到类 ZipArchive

标签 php docker

<分区>

我的 docker 机器/实例出现以下错误:

Class 'ZipArchive' not found

这是我的 Dockerfile:

FROM php:7.2-alpine

RUN docker-php-ext-install sockets pdo_mysql

RUN docker-php-ext-install -j$(nproc) \
    zip

ADD consumer /opt/craft/app/
ADD app.tar.gz /opt/craft/app

CMD /opt/craft/app/consumer

当我通过 docker-run 进入容器时,我可以执行 php -m:

[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
SimpleXML
sockets
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

zip 不存在。它应该在那里吗?我也试过这样做:

/opt/craft/app # apk add zip
OK: 17 MiB in 29 packages
/opt/craft/app # php -m

但是 zip 仍然不可用,我仍然得到相同的输出错误 ziparchive not found

我对 docker 和自己安装 php 模块还很陌生。

如何安装 ZipArchive 类? (最好通过 dockerfile)。

最佳答案

实际上,当我在 docker 上的 php-fpm 7.4 上遇到 Laravel excel 问题时,我发现了你的问题。而这个答案

RUN apk update \
    && apk upgrade \
    && apk add zlib-dev \
    && docker-php-ext-configure zip --with-zlib-dir=/usr \
    && docker-php-ext-install zip 

不要为我工作

我认为这个 Dockerfile 适合你

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 \
    zip \
    unzip

RUN apt-get update && \
     apt-get install -y \
         libzip-dev \
         && docker-php-ext-install zip
# 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

# 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

关于php - 使用 Docker 找不到类 ZipArchive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49976808/

相关文章:

docker - 尝试连接 Kubernetes 中的服务时连接被拒绝

php - 存储登录信息的最佳实践

php - 将 var 从 php 传递到 javascript

php - glob php - 从目录返回所有类型的图像

docker - 为什么Elasticsearch Docker镜像不断出现和消失?

mongodb - 如何使用 docker-compose 在 mongodb 中创建用户

python - 访问Centos服务器上的Docker容器

node.js - 环境变量未在Docker容器内加载

php - 为什么所有 Slim 路由都会在加载/启动时初始化?

php - 插入后获取关系