Lỗi PHP: Mười Phần mở rộng zip và lệnh giải nén đều bị thiếu, bỏ qua.


143

Khi tôi chạy, composer updatetôi nhận được thông báo lỗi này:

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

Tôi cần làm gì để kích hoạt các lệnh zip và giải nén để nhà soạn nhạc có thể tải xuống các phụ thuộc?


Giải pháp thay thế: Sử dụng composer update --prefer-source Tôi gặp vấn đề này khi thử composer updatephpspec. Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. Tôi đang dùng Mac và gặp sự cố khiến Homebrew hoạt động để cài đặt tiện ích mở rộng php. Vì vậy, cách khắc phục nhanh của tôi là buộc composer không cần sử dụng zip bằng cách thêm tùy chọn --prefer-source. Điều này có nghĩa là nó tải xuống repo thay vì gói zip. Không phải là một giải pháp lâu dài nhưng tiện dụng để biết.
John Walker

Câu trả lời:


310

Tùy thuộc vào hương vị phiên bản Linux và PHP của bạn, những phiên bản này có thể khác nhau.

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

Đây là một câu hỏi thường gặp, bạn sẽ có thể tìm thấy nhiều thông tin hữu ích hơn trong Ether bằng cách tìm kiếm <distro> php <version> zip extension.


48
Đối với Ubuntu apt-get install php-ziplà đủ
Olaf Dietsche

1
@OlafDietsche Làm thế nào để bạn biết / xác định thời điểm cài đặt php[version]-packageso php-packagevới bất kỳ gói nào? Rất muốn biết vì tôi thường chỉ đi với php[version]-packagephiên bản, nhưng có lẽ đó không phải là tối ưu
elbowlobstercowstand

@elbowlobstercowstand php-<package>là phiên bản mặc định. Các gói này chỉ phụ thuộc vào phiên bản mới nhất. Nếu bạn cần một số phiên bản cụ thể (thường là cũ hơn), bạn cài đặt php<version>-<package>.
Olaf Dietsche

Nó cũng hoạt động cho # yum install zip unzip php7.2-zip(trên CentOS 7)
Pathros

1
Mọi người tiếp tục đưa ra hướng dẫn để cài đặt php-zip cũng như zip / unzip. Nó không có ý nghĩa rằng nó cần cả hai.
jgmjgm

45

Đối với máy chủ có PHP 5.6

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

1
Bạn là một người bảo vệ cuộc sống, bạn của tôi.
Haring10

1
Đã làm cho tôi. Cảm ơn
umarbilal

23

Đối với Debian Jessie (là mặc định hiện tại cho hình ảnh PHP trên Docker Hub):

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

Bạn có thể bỏ qua các - nhưng nó rất hữu ích khi bạn CHẠY nó trong Dockerfile.


cảm ơn vì đã chia sẻ Peter, đã giúp tôi tiết kiệm thời gian tìm kiếm phiên bản phù hợp của php-zip: D
thaerlabs

23

Đối với các bản phân phối Ubuntu cũ hơn, ví dụ 16.04, 14.04, 12.04, v.v.

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

2
bao gồm 16.04
lightup

15

Tôi đã có PHP7.2 trên máy chủ Ubuntu 16.04 và nó đã giải quyết được vấn đề của tôi:

sudo apt-get install zip unzip php-zip

Cập nhật

Đã thử điều này cho Ubuntu 18.04 và cũng hoạt động tốt.


7

Tôi đang sử dụng Ubuntu và với lệnh sau đã hoạt động

apt-get install --yes zip unzip


5

Không tin vào quan điểm, nhưng nếu bạn đang làm việc trong một Dockerfile, bạn sẽ giải quyết vấn đề đặc biệt này với Trình soạn thảo bằng cách cài đặt unziptiện ích. Dưới đây là một ví dụ sử dụng hình ảnh PHP chính thức để cài đặt unzipzipphần mở rộng PHP cho biện pháp tốt.

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

Đây là một vấn đề GitHub hữu ích trong đó phần trên được nâng lên một cách đáng yêu.


4

Nếu bạn đang sử dụng Ubuntu và PHP 7.2 , hãy sử dụng ...

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

3

Tôi đã gặp lỗi này khi cài đặt Laravel 5.5 trên máy chủ đám mây kỹ thuật số (Ubuntu 18.04 và PHP 7.2) và lệnh sau đã sửa nó.

sudo apt install zip unzip php7.2-zip


2

Trên docker với hình ảnh php:7.2-apachetôi chỉ cần zip và giải nén. Không cần php-zip:

apt-get install zip unzip

hoặc Dockerfile

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

1

Trên thực tế, nhà soạn nhạc ngày nay dường như làm việc mà không có ziplệnh dòng lệnh, vì vậy cài đặt php-ziplà đủ --- NHƯNG nó sẽ hiển thị một cảnh báo:

Vì không có lệnh 'giải nén' nên các tệp zip được cài đặt đang được giải nén bằng phần mở rộng zip PHP. Điều này có thể gây ra các báo cáo không hợp lệ của tài liệu lưu trữ bị hỏng. Cài đặt 'giải nén' có thể khắc phục chúng.

Xem thêm Có vấn đề với việc sử dụng php-zip (nhà soạn nhạc cảnh báo về điều đó)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.