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

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


当前回答

我正在使用Ubuntu,并使用以下命令工作

Apt-get install——yes zip unzip

其他回答

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

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

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

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

sudo apt install php-zip

适用于PHP8.2 (Windows)

如上所述:https://www.php.net/manual/en/zip.installation.php#zip.installation.new.windows

从PHP 8.2.0开始,php_zip.dll DLL必须在PHP .ini中启用。以前,这个扩展是内置的。

您需要在php.ini中手动启用这个扩展,添加extension=php_zip.dll

对于已安装扩展的列表,您可以运行:

php -m

或者如果你安装了grep,会更容易:

php -m | grep "zip"

后运行

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

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

Sudo apt安装解压php7.2-zip