Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP错误:";zip扩展名和解压命令都丢失,正在跳过。”;_Php_Composer Php - Fatal编程技术网

PHP错误:";zip扩展名和解压命令都丢失,正在跳过。”;

PHP错误:";zip扩展名和解压命令都丢失,正在跳过。”;,php,composer-php,Php,Composer Php,当我运行编写器更新时会收到以下错误消息: 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 yo

当我运行
编写器更新时
会收到以下错误消息:

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可以下载依赖项?

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

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

这是一个非常常见的问题,您可以通过搜索
php-zip-extension
在Ether中找到更多有用的信息

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

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

对于使用PHP5.6的服务器

sudo apt-get install zip unzip php5.6-zip
对于Debian Jessie(Docker Hub上PHP映像的当前默认值):


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

我正在使用Ubuntu,下面的命令起作用


apt get install——是的,zip解压

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


sudo-apt-get-install-zip-unzip-php-zip

更新


在Ubuntu18.04上试用过,效果也不错。

如果您使用的是Ubuntu和PHP7.2,请使用这个

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

实际上,composer现在似乎在没有
zip
命令行命令的情况下工作,因此安装
php-zip
应该足够了,但它会显示一个警告:

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


另请参见

在我的digitalocean云服务器(Ubuntu 18.04和PHP 7.2)上安装Laravel 5.5时,我遇到了这个错误,下面的命令修复了它

sudo-apt-install-zip解压php7.2-zip


在docker上使用image
php:7.2-apache
我只需要压缩和解压。无需使用php zip:

apt get install zip解压

还是Dockerfile

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

不是为了说明问题,但是如果您使用的是
Dockerfile
,则可以通过安装
解压
实用程序来使用Composer解决此特定问题。下面是一个使用安装
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

上面的内容被可爱地从中删除。

DebianUbuntu上修复它的最短命令(将自动安装依赖项):


PHP-ZIP
需要一些依赖项或缺少库,取决于
Dockerfile
中的图像,您需要先安装它们

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

你是个救命恩人,我的朋友。为我工作。Thanksudo apt get install zip根据您的PHP版本解压php7.4-zip//包括16.04 for Ubuntu
apt get install PHP zip
issufficient@OlafDietsche您如何知道/确定何时为任何给定软件包安装
php[version]-package
vs
php package
?我很想知道,因为我通常只使用
php[version]-包
version,但这可能不是最优的…@elbowlobstercowstand
php-
是默认版本。这些包只依赖于最新版本。如果您需要一些特定的(通常是较旧的)版本,您可以安装
php-
。人们会不断给出安装PHPzip和zip/unzip的说明。这两个都需要是毫无意义的。而且,你真的应该安装解压软件。否则composer会抱怨:
因为没有安装“unzip”命令,所以正在使用PHP zip扩展解压zip文件。这可能会导致损坏档案的无效报告。此外,归档文件中定义的任何UNIX权限(如可执行文件)都将丢失。安装“unzip”可能会解决这些问题。
因此应该运行
运行…apt get install-yqq…zlib1g dev libzip dev unzip&&docker php ext install zip
感谢分享Peter,节省了我寻找正确版本的
php-zip
:DWorkaround:Use
composer-update--preference-source
我在尝试
composer-update
phpspec时遇到了这个问题
未能从dist下载symfony/polyfill ctype:zip扩展名和unzip命令都丢失,正在跳过。
我在Mac上,在使用自制软件安装php扩展名时遇到问题。因此,我的快速解决方法是通过添加--preference source选项,强制
composer
不需要使用zip。这意味着它将下载repo而不是压缩包。这不是一个长期的解决方案,但很容易知道。我喜欢你在这个答案中的散文。感谢您在我的情况下,执行apt get install-y zlib1g dev libzip dev unzip可以消除错误。
sudo apt install php-zip
RUN set -eux \
   && apt-get update \
   && apt-get install -y libzip-dev zlib1g-dev \
   && docker-php-ext-install zip