作曲家 PHP 错误:"The zip extension and unzip command are both missing, skipping."



当我运行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 和解压缩命令,以便作曲家可以下载依赖项?

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

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

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

适用于 PHP 5.6 的服务器

sudo apt-get install zip unzip php5.6-zip

不是为了强调这一点,但是如果您正在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

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

对于 Windows,如果您使用的是像 XAMPP 这样的语言环境开发环境,只需找到 php.ini 文件(在我的例子中为 C:\xampp\php),打开它并从下一行中删除分号。

;extension=zip

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

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

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

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

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

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

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

sudo apt-get install zip unzip php-zip

更新

在 Ubuntu 18.04 上尝试了这个并且也工作了。

请先检查您的作曲家身份

composer diagnose 

如果状态显示

zip: extension not found, unzip not available, 7-Zip not available

然后

  1. 打开你的 XAMPP 服务器
  2. Apache -> config button ->Click "PHP(php.ini)">
  3. 查找"zip">
  4. ";扩展名 = 将显示 zip
  5. 删除分号并保存文件
  6. 重新启动你的 XAMPP Apache

现在

composer create-project laravel/laravel <<project_name>>

laravel new <<project_name>>

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

apt-get install --yes zip unzip

对于 Windows 用户:

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

搜索"zip"。如果你使用的是 PHP 8.2,你可能会在第 952 行找到它,写成这样: ;扩展名=压缩

删除";",使其看起来像这样 -> 扩展名 =压缩 保存,您就可以开始了!

在带有图像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"]

适用于 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

或者,如果您安装了grep更容易,那就是:

php -m | grep "zip"

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

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

当我在我的数字海洋云服务器(Ubuntu 18.04 和 PHP 7.2)上安装 Laravel 5.5 时,我遇到了此错误,以下命令修复了它。

sudo apt install zip unzip php7.2-zip

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

你可以这样做:

编辑php.ini文件并删除行中的分号

;extension=zip 

保存文件,你很好。.

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

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

参见 使用 php-zip 是否有问题(作曲家警告)

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

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

PHP8.1

apt-get install --yes zip

运行后

apt install php-zip

并再次运行

composer require ...

我收到下一个警告和建议

由于没有"解压缩"或"7z"命令,因此使用 PHP zip 扩展名解压缩了 zip 文件。

这可能会导致无效的存档报告。此外,存档中定义的任何UNIX权限(例如可执行文件)都将丢失。

安装"解压缩"或"7z"(21.01+)可能会修复它们。

由于没有"解压缩"或"7z"命令,因此使用 PHP zip 扩展名解压缩了 zip 文件。

这可能会导致无效的存档报告。此外,存档中定义的任何UNIX权限(例如可执行文件)都将丢失。

安装"解压缩"或"7z"(21.01+)可能会修复它们。

所以我建议先安装解压缩。

apt install unzip

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

sudo apt install php-zip

试试 PHP 7.4:

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

对于 PHP 8.0:

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

如果你使用 XAMPP 在最新版本中运行你的 php 代码,zip 扩展会被注释掉,你必须自己激活它们。导航到 C:\xampp\php,打开 php.ini 文件并找到注释行并通过删除起始分号取消注释,如下所示

;extension=zip

extension=zip

保存并重新运行您的命令。 像魔术一样工作!

找到php.ini并搜索"zip",然后取消注释/删除分号

apt-get install zip

我正在运行一个码头工人容器,这对我有帮助

docker-compose exec app apt-get install zip

我通过取消注释在我的 Windows 系统中修复了此错误zip ext in php.ini.

相关内容

  • 没有找到相关文章

最新更新