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

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命令,以便编写器可以下载依赖项?


当前回答

如果您使用的是像XAMPP这样的本地开发环境,只需找到php.ini文件(在我的例子中是C:\ XAMPP \php),打开它并从下面的行中删除分号。

;extension=zip

重新启动Apache web服务器,它将正常工作。

其他回答

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

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

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

实际上,现在的composer似乎不需要zip命令行命令就可以工作,所以安装php-zip应该就足够了——但是它会显示一个警告:

由于没有“unzip”命令,安装的zip文件正在使用 PHP压缩扩展。 这可能导致已损坏档案的无效报告。安装“unzip”可能 纠正他们。

参见使用php-zip是否有问题(作曲家对此发出警告)

我不想赘述这一点,但如果您在Dockerfile中工作,您可以通过安装unzip实用程序来解决Composer的这个特殊问题。下面是一个使用官方PHP映像安装unzip和zip PHP扩展的示例。

FROM php:7.4-apache

# Install Composer
COPY --from=composer /usr/bin/composer /usr/bin/composer

# Install unzip utility and libs needed by zip PHP extension 
RUN apt-get update && apt-get install -y \
    zlib1g-dev \
    libzip-dev \
    unzip
RUN docker-php-ext-install zip

这是一个很有用的GitHub问题,上面的内容是可爱的。

安装7 zip从这个网站https://www.7-zip.org/download.html这个软件解压缩文件,为您解决了错误

后运行

apt install php-zip

再跑一遍

composer require ...

我得到了下一个警告和建议

由于没有“unzip”或“7z”命令,安装的zip文件正在使用PHP zip扩展名进行解压缩。

这可能导致已损坏档案的无效报告。此外,在存档中定义的任何UNIX权限(例如可执行文件)都将丢失。

安装'unzip'或'7z'(21.01+)可以修复它们。

由于没有“unzip”或“7z”命令,安装的zip文件正在使用PHP zip扩展名进行解压缩。

这可能导致已损坏档案的无效报告。此外,在存档中定义的任何UNIX权限(例如可执行文件)都将丢失。

安装'unzip'或'7z'(21.01+)可以修复它们。

所以我建议先安装unzip。

apt install unzip