PHPエラー:「zip拡張機能とunzipコマンドが両方とも見つからないためスキップします。」


143

実行する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

composerが依存関係をダウンロードできるようにzipおよびunzipコマンドを有効にするために何をする必要がありますか?


回避策: phpspecをcomposer update --prefer-source 試行するときにこの問題が発生したことをcomposer update使用します。 Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. 私はMacを使用していて、Homebrewでphp拡張機能をインストールする際に問題が発生しました。したがって、私の簡単な修正は、-prefer-sourceオプションを追加して、zipを使用する必要がcomposer ないことを強制することでした。これは、圧縮されたパッケージの代わりにリポジトリをダウンロードすることを意味します。長期的な解決策ではありませんが、知っておくと便利です。
John Walker

回答:


310

LinuxとPHPのバージョンの種類によって、これらは異なる場合があります。

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

これは非常によくある質問です<distro> php <version> zip extension。検索すると、エーテルでより役立つ情報を見つけることができます。


48
Ubuntu apt-get install php-zipで十分です
Olaf Dietsche

1
インストールするとき@OlafDietsche方法は、あなたが知っている/決定php[version]-packagephp-package任意のパッケージのために?私は通常、php[version]-packageバージョンをそのまま使用するので、知りたいと思いますが、おそらくそれは最適ではありません…
elbowlobstercowstand

@elbowlobstercowstand php-<package>がデフォルトのバージョンです。これらのパッケージは、最新バージョンに依存しています。特定の(通常は古い)バージョンが必要な場合は、をインストールしphp<version>-<package>ます。
オラフディーチェ2018

また、# yum install zip unzip php7.2-zip(CentOS 7で)動作します
Pathros

1
人々はphp-zipだけでなくzip / unzipをインストールする指示を出し続けます。両方が必要であることは意味がありません。
jgmjgm

45

PHP 5.6を搭載したサーバーの場合

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

1
私の友達、あなたは命の恩人です。
Haring10

1
私のために働いた。ありがとう
umarbilal 2018

23

Debian Jessie(Docker Hub上のPHPイメージの現在のデフォルト):

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

--yesは省略できますが、Dockerfileで実行する場合に役立ちます。


ピーターを共有するためのおかげで、右のバージョンを探している私にいくつかの時間を保存したphp-zipD:
thaerlabs


15

Ubuntu 16.04サーバーでPHP7.2を使用していて、問題が解決しました。

sudo apt-get install zip unzip php-zip

更新

Ubuntu 18.04でこれを試して、同様に機能しました。



5

重要なことではありませんが、で作業しているDockerfile場合は、unzipユーティリティをインストールすることで、この特定の問題をComposerで解決します。以下は使用例であるPHPの公式イメージをインストールするunzipzip良い測定のための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の有用な問題であり、上記の問題が根本的に解消されています。


4

使用している場合はUbuntuとPHP 7.2を、これを使用...

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

3

このエラーは、Digitaloceanクラウドサーバー(Ubuntu 18.04およびPHP 7.2)にLaravel 5.5をインストールし、次のコマンドで修正したときに発生しました。

sudo apt install zip unzip php7.2-zip


2

画像付きのドッカーでは、php:7.2-apachezipとunzipが必要でした。php-zipは不要です。

apt-get install zip unzip

またはDockerfile

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

1

実際には、今日のcomposerはzipコマンドラインコマンドなしで動作するように見えるので、インストールphp-zipで十分です---しかし、警告が表示されます。

「unzip」コマンドがないため、インストールされたzipファイルはPHP zip拡張機能を使用して解凍されます。これにより、破損したアーカイブの無効なレポートが発生する可能性があります。「unzip」をインストールすると修正される場合があります。

php-zipの使用に問題はありますか(作成者が警告します)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.