Lỗi nghiêm trọng: Không tìm thấy lớp 'ZipArchive' trong


181

Tôi gặp sự cố khi cài đặt 'Archive_Zip 0.1.1' trên máy chủ Linux, nhưng khi tôi cố chạy tập lệnh để tạo tệp zip, nó sẽ báo lỗi nghiêm trọng

Lỗi nghiêm trọng: ZipArchiveKhông tìm thấy lớp trong ...

nơi tôi đặt mã

$zip = new ZipArchive;
var_dump($zip);
$res = $zip->open($filename, ZipArchive::OVERWRITE);
if ($res !== TRUE) {
    echo 'Error: Unable to create zip file';
    exit;
}
if (is_file($src)) {
    $zip->addFile($src);
} else {
    // echo "<br>" . dirname(__FILE__) . $src;//'/install1';
    if (!is_dir($src)) {
         $zip->close();
         @unlink($filename);
         echo 'Error: File not found';
         exit;
    }
    recurse_zip($src, $zip, $path_length);
}
$zip->close();
echo "<br>file name ".$filename;

nhưng nó không tìm thấy tập tin lớp.

Hãy cho tôi biết giải pháp. Tôi nên làm gì để giải quyết vấn đề? Tôi cũng đặt php.initập tin vào thư mục chứa tập lệnh, nhưng nó không hoạt động.


7
Khi sử dụng Ubuntusudo apt-get install php7.2-zip
Eric Korolev

1
@EricKorolev cung cấp E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'sử dụng Ubuntu 14.04 với php 7.2
Muhammad Omer Aslam

1
Trên Debian 10, nó đơn giản apt-get install php-zip.
aexl

Bạn có thể xem bài đăng này: stackoverflow.com/a/60482998/4806585
VishalParkash

Câu trả lời:


207

Để ZipArchivelớp có mặt, PHP cần phải cài đặt phần mở rộng zip .

Xem trang này để biết hướng dẫn cài đặt (cả Linux và Windows).


1
có lẽ tôi không thể hiểu những gì tôi làm. Tôi sử dụng các ví dụ được đưa ra trên các loại mực bạn cung cấp để nghiên cứu và hoàn thành kịch bản. nó hoạt động tốt trên máy tính của tôi (localhost) và không có trong máy chủ. xin đề xuất cho nó
Parag Chaure

49
Trên máy chủ Ubuntu sử dụng apt-getsudo apt-get install php7.0-zip
Luddig

9
Giải pháp đơn giản : sudo apt-get install php7.0-zip. Sau đó, chỉnh sửa tệp /etc/php/7.0/cli/php.ini(Trong phần "Tiện ích mở rộng động", thêm dòng extension=zip.so). Điều này sẽ giải quyết nó
JonyD

21
Dành cho Dockerdocker-php-ext-install zip
David Riccitelli

11
Như @Luddig đã đề cập trên máy chủ Ubuntu sau khi sudo apt-get install php7.0-zipbạn cần khởi động lại máy chủ apachesudo systemctl restart apache2
hashmi

82

Trên Amazon ec2 với Ubuntu + nginx + php7, tôi đã gặp vấn đề tương tự, đã giải quyết nó bằng cách sử dụng:

sudo apt-get install php7.0-zip


sau khi cài đặt apt-get, php7.0-xsl gặp sự cố ... đừng lo, chỉ cần cài đặt apt-get cài đặt php7.0-zip
bortunac

sudo apt-get install php7.1-zipcho Ubuntu / php7.1
Nino kopac

điều này không hoạt động php 7.2và luôn luôn nóiE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam

39

Trên máy tính để bàn Ubuntu, tôi phải làm.

sudo apt-get install php5.6-zip

Điều này đã cài đặt thư viện nhưng tôi vẫn tiếp tục gặp lỗi tương tự, vì vậy tôi phải khởi động lại apache bằng cách sử dụng:

sudo service apache2 restart

va no đa hoạt động.


1
Apache khởi động lại đã làm điều đó, khi kết hợp với giải pháp của @ pekka
gthuo

18

Trước hết, Giải pháp cho máy chủ từ xa:

Nếu bạn đang sử dụng cpanel, bạn có thể đã cài đặt tiện ích mở rộng zip nhưng không kích hoạt. Bạn cần phải kích hoạt nó. Trong trường hợp này, bạn cần vào cpanel> bên trong phần mềm> nhấp vào phiên bản PHP . Sau đó tìm zip và kiểm tra nó. Bây giờ tiết kiệm.

Bạn sẽ thấy giống như hình ảnh. nhập mô tả hình ảnh ở đây

Làm mới trang. Các lỗi sẽ biến mất.

Lưu ý: Nếu bạn không tìm thấy, liên hệ với nhà cung cấp máy chủ. Họ sẽ cài đặt cho bạn.


Điều này làm việc cho tôi. Tôi đã sử dụng một trình xây dựng mẫu và nó sẽ không xuất. Tôi đã kiểm tra hộp kiểm zip, lưu và voila. Cảm ơn bạn Kaylan
Hblegg

16

Tôi không thấy nó ở đây, vì vậy tôi muốn thêm nó vào Debian / Ubuntu, bạn có thể cần phải bật tiện ích mở rộng sau khi cài đặt gói tương đối. Vì thế:

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart

2
Cài đặt php7.0-zipcho PHP 7.
AnthonyB

ĐỪNG QUÊN NHÀ HÀNG APACHE !!
zzapper

1
Cài đặt php7.1-zip cho PHP 7.1, php7.2-zip cho PHP 7.2.
Neo

6

Nếu bạn có sẵn WHM thì dễ dàng hơn.

Đăng nhập vào WHM .

Tới EasyApache 4 (hoặc bất kỳ phiên bản u có) bên dưới phần mềm tab .

Trong Gói hiện được cài đặt, nhấp vào Tùy chỉnh .

Chuyển đến Phần mở rộng PHP , trong loại tìm kiếm " zip " ( không có dấu ngoặc kép ),

bạn sẽ thấy 3 mô-đun

kiểm tra tất cả chúng,

nhấp vào nút màu xanh vài lần để kết thúc quá trình.

Điều này làm việc cho tôi. Rất may tôi đã có sẵn WHM.


5

Điều này đã làm việc

apt-get install php7.0-zip

và không cần phải khởi động lại php7.0-fpmbằng tay.

Giải nén php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Xử lý kích hoạt cho php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmdừng / chờ
php7.0-fpmbắt đầu / chạy, xử lý 1572
php7.0-fpmdừng / chờ
php7.0-fpmbắt đầu / chạy, xử lý 1777
Thiết lập php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
locale: Không thể đặt thành LC_ALLngôn ngữ mặc định: Không có tệp như vậy hoặc thư mục

Tạo tập tin cấu hình /etc/php/7.0/mods-available/zip.inivới phiên bản mới
Xử lý kích hoạt cho php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmdừng / chờ
php7.0-fpmbắt đầu / chạy, xử lý 2354
php7.0-fpmdừng / chờ
php7.0-fpmbắt đầu / chạy, xử lý 2397


4

Bạn cũng cần biên dịch PHP với hỗ trợ zip. Hướng dẫn nói như sau:

Để sử dụng các hàm này, bạn phải biên dịch PHP với hỗ trợ zip bằng cách sử dụng tùy chọn cấu hình --enable-zip.

Chỉ cài đặt các phần mở rộng chính xác trên máy chủ là không đủ. Có một cái nhìn vào các hướng dẫn cài đặt liên kết được đăng tải trước đó. Câu trả lời của tôi chỉ là một sự làm rõ của mình.


đúng, nhưng tôi nên chạy lệnh này ở đâu trên máy chủ để php chạy với hỗ trợ zip
Parag Chaure

Nó có phải là một máy chủ mà bạn kiểm soát? Nếu vậy tôi tin rằng đó là một phần của lệnh make khi cài đặt PHP. Nếu đó không phải là máy chủ mà bạn kiểm soát thì lựa chọn duy nhất cho bạn là cố gắng để quản trị viên hệ thống thực hiện. Xin lỗi tôi không thể chính xác hơn - Tôi chưa bao giờ cài đặt PHP trên máy chủ linux từ đầu.
Jeremy

4

Tôi gặp vấn đề tương tự với máy chủ được cài đặt CentOScPanel . Tôi đã cài đặt gói zipArchive qua cPanel và không hoạt động như mong đợi. Sau khi thử với rất nhiều bản sửa lỗi, chúng tôi đã đề xuất mọi cách ở dưới.

Đầu tiên tìm tên cho gói chính xác bằng lệnh dưới đây

yum search zip |grep -i php

Sau đó sử dụng mã dưới đây.

yum install your_zip_package_name_with_php_version

Trong trường hợp của tôi, mã chính xác để cài đặt zipArchive là

yum install php-pecl-zip.x86_64

Tôi đã có giải pháp từ liên kết này. Làm cách nào tôi có thể khắc phục zipArchive trên PHP 7.2 với CentOS 7?

Và cài đặt này bằng cách nào đó cũng kích hoạt gói đó và nó cũng khởi động lại các dịch vụ có hiệu lực và sau khi hoàn thành việc thực thi mã zipArchive ở trên đã không còn nữa.


4

Centos 6

yum install php-pecl-zip

service httpd restart

1
Cảm ơn bạn. Tôi đã cài đặt php-pecl-zip, nhưng không khởi động lại httpd. Cuối cùng cũng tìm thấy câu trả lời của bạn!
Ngọc Nam

3

PHP 5.2.0 trở lên

Hệ thống Linux

Để sử dụng các hàm này, bạn phải biên dịch PHP với hỗ trợ zip bằng cách sử dụng tùy chọn cấu hình --enable-zip.

các cửa sổ

Người dùng Windows cần kích hoạt php_zip.dll bên trong php.ini để sử dụng các chức năng này.


3

Tôi đã gặp vấn đề này trên GCP trong khi triển khai wordpress trong môi trường Tiêu chuẩn Máy ứng dụng. Điều này đã giải quyết nó:

sudo apt-get install php7.2-zip

3

Đối với PHP 7.x

sudo apt-get install php-zip

Đối với PHP 5.x

sudo apt-get install php5.x-zip
// (for example sudo apt-get install php5.6-zip)

Và sau đó khởi động lại máy chủ Apache

sudo service apache2 restart

1

Dành cho Centos 7 và PHP 7.3 trên Remi

Tìm kiếm phần mở rộng zip:

$ yum search php73 | grep zip
php73-php-pecl-zip.x86_64 : A ZIP archive management extension

Tên tiện ích mở rộng là php73-php-pecl-zip.x86_64 . Để cài đặt nó trong máy chủ chạy phiên bản PHP duy nhất, hãy xóa tiền tố php73:

$ sudo yum --enablerepo=remi-php73 install php-pecl-zip #for server running single PHP7.3 version
$ #sudo yum --enablerepo=remi-php73 install php73-php-pecl-zip # for server running multiple PHP versions

Khởi động lại PHP:

$ sudo systemctl restart php-fpm

Kiểm tra các phần mở rộng PHP đã cài đặt:

$ php -m
[PHP Modules]
apcu
bcmath
bz2
...
zip
zlib

1

Để sử dụng máy chủ dựa trên CentOS

yum install php-pecl-zip.x86_64

Kích hoạt nó bằng cách chạy: echo "extension=zip.so" >> /etc/php.d/zip.ini


0

Tôi đã có cùng một vấn đề và nó đã được giải quyết bằng hai dòng lệnh:

sudo apt install php-zip

sau đó khởi động lại máy chủ web của bạn, cho Apache

sudo service apache2 restart


0

Hãy cố gắng viết \ZIPARCHIVEthay vì ZIPARCHIVE.


0

Bạn cần kiểm tra phiên bản PHP

Nếu phiên bản php là 5.6 thì bạn cần cài đặt php5.7-zip

sudo apt-get install php5.6-zip

và sau đó

sudo service apache2 restart

Hy vọng nó giúp


-13

1) Bạn nên requiretập tin của bạn với ZipArchivetập tin.

require 'path/to/file/ZipArchive.php';

2) Hoặc sử dụng __autoloadphương pháp của lớp. Trong PHP 5, nó là một phương thức greate __autoload ().

function __autoload($class_name) {
    require_once $class_name . '.php';
}

$obj  = new MyClass1(); // creating an object without require.

http://www.php.net/manual/en/lingu.oop5.autoload.php


Tôi nên bao gồm hoặc yêu cầu tệp ZipArchive như thế nào?
Parag Chaure
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.