当我运行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 映像来安装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
这是一个有用的 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
然后
- 打开你的 XAMPP 服务器
- Apache -> config button ->Click "PHP(php.ini)">
- 查找"zip">
- ";扩展名 = 将显示 zip
- 删除分号并保存文件
- 重新启动你的 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
在Debian和Ubuntu上修复它的最短命令(依赖项将自动安装):
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
.