PHP错误:“ zip扩展名和unzip命令都丢失了,正在跳过。”


143

当我运行a时,出现composer update以下错误消息:

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命令,以便作曲家可以下载依赖项?


解决方法:使用 composer update --prefer-source 尝试composer updatephpspec 时出现此问题。 Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. 我在Mac上,在使Homebrew能够安装php扩展程序时遇到问题。所以,我的速战速决是迫使composer 不是通过添加--prefer源选项需要使用拉链。这意味着它将下载存储库而不是压缩包。这不是一个长期的解决方案,但很容易知道。
约翰·沃克

Answers:


308

根据您的Linux和PHP版本的风格,它们可能会有所不同。

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

这是一个非常常见的问题,您可以通过搜索在以太坊中找到更多有用的信息<distro> php <version> zip extension


48
对于Ubuntu来说apt-get install php-zip就足够了
Olaf Dietsche

1
@OlafDietsche您如何知道/确定何时安装php[version]-packagevs. php-package给定软件包?很想知道,因为我通常只使用该php[version]-package版本,但这可能不是最佳选择……
elbowlobstercowstand

@elbowlobstercowstand php-<package>是默认版本。这些软件包仅取决于最新版本。如果您需要特定的(通常是较旧的)版本,请安装php<version>-<package>
奥拉夫·迪斯特

它也适用于# yum install zip unzip php7.2-zip(在CentOS 7上)
Pathros,

1
人们不断给出安装php-zip以及zip / unzip的说明。两者都需要是没有意义的。
jgmjgm


23

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

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

您可以省略--yes,但是在Dockerfile中运行它时很有用。


感谢您分享彼得,节省了我一些时间寻找php-zip:D 的正确版本
thaerlabs '18

23

对于较旧的Ubuntu发行版,例如16.04、14.04、12.04等

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

2
包括16.04
点亮

15

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

sudo apt-get install zip unzip php-zip

更新资料

在Ubuntu 18.04上对此进行了尝试,并且效果很好。



5

不必太着急了,但是如果您使用的是,则可以Dockerfile通过安装unzip实用程序来解决Composer的这一特定问题。下面是使用官方PHP映像进行安装的示例,unzip以及使用zipPHP扩展进行良好测量的示例。

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问题,从上面可以很好地解决上述问题


4

如果您使用的是Ubuntu和PHP 7.2,请使用此...

sudo apt-get update
sudo apt-get install zip unzip php7.2-zip

3

在我的digitalocean云服务器(Ubuntu 18.04和PHP 7.2)上安装Laravel 5.5时,出现此错误,以下命令对其进行了修复。

sudo apt install zip unzip php7.2-zip


2

在带有图像的docker上,php:7.2-apache我只需要压缩和解压缩。不需要php-zip:

apt-get install zip unzip

或Dockerfile

RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "zip"]
RUN ["apt-get", "install", "-y", "unzip"]

1

实际上,如今的作曲家似乎无需使用zip命令行命令即可工作,因此安装php-zip应该足够---但它会显示警告:

由于没有安装“ unzip”命令,因此正在使用PHP zip扩展名解压缩zip文件。这可能会导致无效的存档报告。安装“ unzip”可能会修复它们。

另请参见使用php-zip是否有问题(撰写者对此有警告)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.