ข้อผิดพลาดของ PHP:“ ส่วนขยาย zip และคำสั่ง unzip ทั้งคู่หายไปและข้าม”


144

เมื่อฉันเรียกใช้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 และ unzip เพื่อให้ผู้แต่งสามารถดาวน์โหลดการพึ่งพาได้


วิธีแก้ปัญหา: ใช้ composer update --prefer-source ฉันมีปัญหานี้เมื่อพยายามcomposer updatephpspec Failed to download symfony/polyfill-ctype from dist: The zip extension and unzip command are both missing, skipping. ฉันใช้ Mac และมีปัญหาในการทำให้ Homebrew ทำงานเพื่อติดตั้งส่วนขยาย php ดังนั้นการแก้ไขด่วนของฉันคือการบังคับให้composer ไม่ต้องใช้ zip โดยการเพิ่มตัวเลือก --prefer-source ซึ่งหมายความว่ามันดาวน์โหลด repo แทนแพ็คเกจซิป ไม่ใช่วิธีแก้ปัญหาระยะยาว แต่มีประโยชน์ที่จะรู้
จอห์นวอล์คเกอร์

คำตอบ:


311

สิ่งเหล่านี้อาจแตกต่างกันไปขึ้นอยู่กับรสชาติของ 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]-packagevs php-packageสำหรับแพ็คเกจใด ๆ ได้อย่างไร ชอบที่จะรู้ว่าฉันมักจะไปกับphp[version]-packageรุ่น แต่บางทีมันอาจจะไม่เหมาะสม ...
elbowlobstercowstand

@elbowlobstercowstand php-<package>เป็นรุ่นเริ่มต้น แพ็คเกจเหล่านี้ขึ้นอยู่กับรุ่นล่าสุด ถ้าคุณต้องการบางอย่าง (มักจะเก่า) php<version>-<package>รุ่นที่คุณติดตั้ง
Olaf Dietsche

นอกจากนี้ยังใช้งานได้กับ# 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

23

สำหรับ Debian Jessie (ซึ่งเป็นค่าเริ่มต้นปัจจุบันสำหรับอิมเมจ PHP ใน Docker Hub):

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

คุณสามารถละเว้น - ใช่ แต่มีประโยชน์เมื่อคุณเรียกใช้ใน Dockerfile


ขอบคุณสำหรับการแบ่งปันปีเตอร์ช่วยฉันบางครั้งมองหารุ่นที่เหมาะสมของphp-zip: D
thaerlabs


16

ฉันมี PHP7.2 บนเซิร์ฟเวอร์ Ubuntu 16.04 และแก้ปัญหาของฉันได้:

sudo apt-get install zip unzip php-zip

ปรับปรุง

พยายามทำสิ่งนี้สำหรับ Ubuntu 18.04 และทำงานได้ดี



5

เพื่อไม่ให้เชื่อในประเด็นนี้ แต่ถ้าคุณกำลังทำงานอยู่Dockerfileคุณจะต้องแก้ไขปัญหาเฉพาะนี้ด้วย Composer ด้วยการติดตั้งunzipยูทิลิตี้ ด้านล่างนี้เป็นตัวอย่างการใช้อิมเมจ 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 ที่เป็นประโยชน์ที่ยกประเด็นข้างต้นออกจากความรัก


4

หากคุณใช้Ubuntu และ PHP 7.2ให้ใช้สิ่งนี้ ...

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

3

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันติดตั้ง Laravel 5.5 บนเซิร์ฟเวอร์คลาวด์ digitalocean (Ubuntu 18.04 และ PHP 7.2) และคำสั่งต่อไปนี้ได้แก้ไข

sudo apt install zip unzip php7.2-zip


2

บนนักเทียบท่าที่มีรูปภาพphp:7.2-apacheฉันแค่ต้องการ zip และ 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

ที่จริงแล้วนักแต่งเพลงทุกวันนี้ดูเหมือนว่าจะทำงานโดยไม่มีzipคำสั่งบรรทัดคำสั่งดังนั้นการติดตั้งphp-zipควรจะเพียงพอ --- แต่มันจะแสดงคำเตือน:

เนื่องจากไม่มีไฟล์ซิปติดตั้งคำสั่ง 'unzip' ที่กำลังถูกคลายบีบอัดโดยใช้ส่วนขยาย PHP zip นี่อาจทำให้รายงานที่เก็บถาวรที่เสียหายไม่ถูกต้อง การติดตั้ง 'unzip' อาจช่วยแก้ไขได้

ดูเพิ่มเติมมีปัญหาในการใช้ php-zip (ผู้แต่งเตือนเกี่ยวกับเรื่องนี้หรือไม่)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.