PHP错误:"zip扩展和解压缩命令都丢失,跳过."

b85*_*411 113 php composer-php

当我运行时,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
Run Code Online (Sandbox Code Playgroud)

我需要做什么来启用zip和unzip命令,以便作曲家可以下载依赖项?

Arr*_*sar 259

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

(sudo) yum install zip unzip php-zip
(sudo) apt install zip unzip php-zip
Run Code Online (Sandbox Code Playgroud)

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

  • 对于Ubuntu`apt-get install php-zip`就足够了 (39认同)
  • 人们不断给出安装 php-zip 以及 zip/unzip 的说明。两者都需要是没有意义的。 (2认同)
  • 另外,你真的应该安装 unzip。否则,作曲家会抱怨:“因为没有‘unzip’命令,所以安装的 zip 文件正在使用 PHP zip 扩展名进行解压。这可能会导致损坏的档案的无效报告。此外,档案中定义的任何 UNIX 权限(例如可执行文件)都将丢失。安装“unzip”可能会修复它们。`所以应该是`RUN … apt-get install -yqq … zlib1g-dev libzip-dev unzip &amp;&amp; docker-php-ext-install zip` (2认同)

Gen*_*r ツ 94

对于 Windows,如果您使用的是 XAMPP 等语言环境开发环境,只需找到 php.ini 文件(在本例中为 C:\xampp\php),将其打开并删除以下行中的分号。

;extension=zip
Run Code Online (Sandbox Code Playgroud)

重新启动您的 Apache 网络服务器,它就会正常工作。

  • 它节省了我在 Windows 电脑上工作的时间 (3认同)
  • 干得好,我的工作真的开始了,我刚刚问了 chatgpt,他给出了非常有趣的答案 (2认同)

小智 41

适用于PHP 5.6的服务器

sudo apt-get install zip unzip php5.6-zip
Run Code Online (Sandbox Code Playgroud)


小智 22

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

apt-get install --yes zip unzip php-pclzip
Run Code Online (Sandbox Code Playgroud)

你可以省略--yes,但是当你在Dockerfile中运行它时它很有用.


Gok*_*asa 21

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

sudo apt-get install zip unzip php7.0-zip
Run Code Online (Sandbox Code Playgroud)

  • 包括16.04 (2认同)

DJ *_*ipe 20

不是要强调这一点,但如果您在 . 中工作Dockerfile,您可以通过安装该unzip实用程序来解决 Composer 的这个特定问题。下面是一个使用官方 PHP 映像安装unzipzipPHP 扩展的示例。

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
Run Code Online (Sandbox Code Playgroud)

这是一个有用的 GitHub 问题,上面的内容被亲切地摘录了。


小智 17

请先检查您的作曲家状态

composer diagnose 
Run Code Online (Sandbox Code Playgroud)

如果状态显示

zip: extension not found, unzip not available, 7-Zip not available
Run Code Online (Sandbox Code Playgroud)

然后

  1. 打开您的 XAMPP 服务器
  2. Apache -> 配置按钮 -> 单击“PHP(php.ini)”
  3. 找到“邮编”
  4. ";扩展名 = zip 将显示
  5. 删除分号并保存文件
  6. 重新启动您的 XAMPP Apache

现在

composer create-project laravel/laravel <<project_name>>
Run Code Online (Sandbox Code Playgroud)

或者

laravel new <<project_name>>
Run Code Online (Sandbox Code Playgroud)


Aqi*_*hef 13

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

sudo apt-get install zip unzip php-zip

更新

为Ubuntu 18.04试过这个并且工作得很好.


Mos*_*eda 8

对于 Windows 用户:

找到 php.ini 并使用文本编辑器打开它。

搜索“zip”。如果您使用 PHP 8.2,您可能会在第 952 行找到这样的写法: ;extension=zip

去除 ';' 所以它看起来像这样 -> 扩展名 =zip 保存,然后就可以开始了!


zan*_*war 6

对于 PHP8.2(Windows)

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

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

您需要在 php.ini 中手动启用此扩展,方法是添加extension=php_zip.dll

要获取已安装扩展的列表,您可以运行:

php -m
Run Code Online (Sandbox Code Playgroud)

或者如果你grep安装得更简单的话:

php -m | grep "zip"
Run Code Online (Sandbox Code Playgroud)


Osc*_*vid 5

我正在使用Ubuntu并使用以下命令

apt-get install --yes zip unzip


Arm*_*ier 5

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

apt-get install zip unzip

或 Dockerfile

RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "zip"]
RUN ["apt-get", "install", "-y", "unzip"]
Run Code Online (Sandbox Code Playgroud)