PHP 错误:“zip 扩展名和解压缩命令都丢失,正在跳过。”
Posted
技术标签:
【中文标题】PHP 错误:“zip 扩展名和解压缩命令都丢失,正在跳过。”【英文标题】:PHP error: "The zip extension and unzip command are both missing, skipping." 【发布时间】:2017-05-07 14:07:16 【问题描述】:当我运行 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 可以下载依赖项?
【问题讨论】:
解决方法:使用composer update --prefer-source
我在尝试composer update
phpspec 时遇到了这个问题。 Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping.
我在 Mac 上,在让 Homebrew 安装 php 扩展时遇到问题。因此,我的快速解决方法是通过添加 --prefer-source 选项来强制 composer
not 需要使用 zip。这意味着它会下载 repo 而不是压缩包。不是一个长期的解决方案,但很容易知道。
【参考方案1】:
根据您的 Linux 风格和 PHP 版本,这些可能会有所不同。
(sudo) yum install zip unzip php-zip
(sudo) apt install zip unzip php-zip
这是一个非常常见的问题,您可以通过搜索<distro> php <version> zip extension
在以太中找到更多有用的信息。
【讨论】:
对于 Ubuntuapt-get install php-zip
就足够了
@OlafDietsche 您如何知道/确定何时安装 php[version]-package
与 php-package
为任何给定的软件包?很想知道,因为我通常只使用php[version]-package
版本,但也许这不是最佳选择……
@elbowlobstercowstand php-<package>
是默认版本。这些软件包仅取决于最新版本。如果您需要某些特定(通常是较旧的)版本,请安装 php<version>-<package>
。
人们不断给出安装 php-zip 以及 zip/unzip 的说明。两者都需要是没有意义的。
另外,你真的应该安装解压缩。否则作曲家会抱怨:As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension. This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost. Installing 'unzip' may remediate them.
所以应该是RUN … apt-get install -yqq … zlib1g-dev libzip-dev unzip && docker-php-ext-install zip
【参考方案2】:
适用于 PHP 5.6 的服务器
sudo apt-get install zip unzip php5.6-zip
【讨论】:
朋友,你是救命稻草。 为我工作。谢谢 sudo apt-get install zip unzip php7.4-zip // 根据你的 PHP 版本【参考方案3】:不必赘述,但如果您在 Dockerfile
中工作,您可以通过安装 unzip
实用程序来解决 Composer 的这个特殊问题。下面是使用official PHP image 安装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
This is a helpful GitHub issue 上面的内容是从这里亲切地提出来的。
【讨论】:
我很喜欢你在这个答案中的散文。谢谢 在我的情况下,执行 apt-get install -y zlib1g-dev libzip-dev unzip 可以消除错误。 如果警告来自在 php:7.4-cli 中使用 Dockerfile 执行的作曲家,只需安装zip
警告就会消失。 RUN apt-get update && apt-get install -y zip
。它没有要求解压缩、库或 docker-php-ext...【参考方案4】:
对于 Debian Jessie(这是 Docker Hub 上 PHP 映像的当前默认设置):
apt-get install --yes zip unzip php-pclzip
您可以省略 --yes,但在 Dockerfile 中运行它时它很有用。
【讨论】:
感谢分享 Peter,为我节省了一些时间寻找合适的php-zip
版本:D【参考方案5】:
对于较旧的 Ubuntu 发行版,即 16.04、14.04、12.04 等
sudo apt-get install zip unzip php7.0-zip
【讨论】:
包括16.04【参考方案6】:我在 Ubuntu 16.04 服务器上安装了 PHP7.2,它解决了我的问题:
sudo apt-get install zip unzip php-zip
更新
在 Ubuntu 18.04 上试过这个并且效果很好。
【讨论】:
【参考方案7】:我正在使用 Ubuntu,并且可以使用以下命令
apt-get install --yes zip unzip
【讨论】:
【参考方案8】:如果您使用的是 Ubuntu 和 PHP 7.2,请使用此...
sudo apt-get update
sudo apt-get install zip unzip php7.2-zip
【讨论】:
【参考方案9】:当我在我的 digitalocean 云服务器(Ubuntu 18.04 和 PHP 7.2)上安装 Laravel 5.5 时遇到此错误,并且以下命令修复了它。
sudo apt install zip unzip php7.2-zip
【讨论】:
【参考方案10】:在带有图像 php:7.2-apache
的 docker 上,我只需要压缩和解压缩。不需要 php-zip:
apt-get install zip unzip
或 Dockerfile
RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "zip"]
RUN ["apt-get", "install", "-y", "unzip"]
【讨论】:
【参考方案11】:实际上作曲家现在似乎可以在没有zip
命令行命令的情况下工作,所以安装php-zip
就足够了 --- 但它会显示警告:
由于没有“解压缩”命令安装的 zip 文件正在使用 PHP 压缩扩展。 这可能会导致损坏档案的无效报告。安装“解压缩”可能 修复它们。
另见Is there a problem with using php-zip (composer warns about it)
【讨论】:
【参考方案12】:PHP-ZIP
需要一些依赖或缺少库,取决于来自Dockerfile
的图像,您需要先安装它们
RUN set -eux \
&& apt-get update \
&& apt-get install -y libzip-dev zlib1g-dev \
&& docker-php-ext-install zip
【讨论】:
【参考方案13】:在 Debian 和 Ubuntu 上修复它的最短命令(将自动安装依赖项):
sudo apt install php-zip
【讨论】:
【参考方案14】:在 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 错误:“zip 扩展名和解压缩命令都丢失,正在跳过。”的主要内容,如果未能解决你的问题,请参考以下文章