当我运行一个作曲器更新时,我得到这个错误消息:

Loading composer repositories with package information
Updating dependencies (including require-dev)
    Failed to download psr/log from dist: The zip extension and unzip command are both missing, skipping.
The php.ini used by your command-line PHP is: /etc/php/7.0/cli/php.ini
    Now trying to download from source

我需要做什么才能启用zip和unzip命令,以便编写器可以下载依赖项?


当前回答

对于Debian Jessie(这是Docker Hub上PHP映像的当前默认):

apt-get install --yes zip unzip php-pclzip

你可以省略——是的,但当你在Dockerfile中运行它时,它很有用。

其他回答

PHP-ZIP需要一些依赖项或库缺失,这取决于你需要先安装Dockerfile中的镜像

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

根据您对Linux和PHP版本的喜好,这些可能会有所不同。

(sudo) yum install zip unzip php-zip
(sudo) apt install zip unzip php-zip

这是一个非常常见的问题,你可以通过搜索<distro> php <version> zip扩展名来找到更多有用的信息。

在PHP 7.4中试试这个:

sudo apt-get install zip unzip php7.4-zip

对于PHP 8.0:

sudo apt-get install zip unzip php8.0-zip

对于使用PHP 5.6的服务器

sudo apt-get install zip unzip php5.6-zip

我在Ubuntu 16.04服务器上安装了PHP7.2,它解决了我的问题:

Sudo apt-get install zip解压php-zip

更新

在Ubuntu 18.04上尝试了这个方法,效果也不错。