Kesalahan fatal: Kelas 'ZipArchive' tidak ditemukan di

181

Saya memiliki masalah yang saya instal 'Archive_Zip 0.1.1' di server Linux, tetapi ketika saya mencoba menjalankan skrip untuk membuat file zip itu memberikan kesalahan fatal

Kesalahan fatal: Kelas ZipArchivetidak ditemukan di ...

tempat saya meletakkan kode

$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;

tetapi tidak menemukan file kelas.

Tolong beri tahu saya solusinya. Apa yang harus saya lakukan untuk menyelesaikan masalah? Saya juga meletakkan php.inifile ke folder tempat skrip berada, tetapi tidak berfungsi.

Parag Chaure
sumber
7
Pada penggunaan Ubuntusudo apt-get install php7.2-zip
Eric Korolev
1
@EricKorolev yang memberikan E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'menggunakan ubuntu 14.04 dengan php 7.2
Muhammad Omer Aslam
1
Pada Debian 10, itu sederhana apt-get install php-zip.
aexl
Anda dapat melihat posting ini: stackoverflow.com/a/60482998/4806585
VishalParkash

Jawaban:

207

Agar ZipArchivekelas hadir, PHP perlu menginstal ekstensi zip .

Lihat halaman ini untuk instruksi pemasangan (baik Linux dan Windows).

Pekka
sumber
1
mungkin saya tidak bisa mengerti apa yang saya lakukan. Saya menggunakan contoh-contoh yang diberikan pada tinta yang Anda berikan untuk belajar dan menyelesaikan skrip. itu berfungsi dengan baik pada pc saya (localhost) & tidak di server. mohon saran untuk itu
Parag Chaure
49
Di server ubuntu menggunakan apt-getsudo apt-get install php7.0-zip
Luddig
9
Solusi sederhana: sudo apt-get install php7.0-zip. Kemudian, edit file /etc/php/7.0/cli/php.ini(Di bagian "Ekstensi Dinamis", tambahkan baris extension=zip.so). Ini harus menyelesaikannya
JonyD
21
Untuk Dockerdocker-php-ext-install zip
David Riccitelli
11
Seperti yang disebutkan oleh @Luddig di server ubuntu setelah sudo apt-get install php7.0-zipAnda perlu me-restart server apachesudo systemctl restart apache2
hashmi
82

Di Amazon ec2 dengan Ubuntu + nginx + php7, saya memiliki masalah yang sama, diselesaikan dengan menggunakan:

sudo apt-get install php7.0-zip

star18bit
sumber
setelah apt-get install php7.0-xsl punya masalah ... jangan khawatir hanya apt-get install php7.0-zip untuk dipecahkan
bortunac
sudo apt-get install php7.1-zipuntuk Ubuntu / php7.1
Nino Škopac
ini tidak bekerja dengan php 7.2dan selalu mengatakanE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam
39

Di desktop ubuntu, saya harus melakukannya.

sudo apt-get install php5.6-zip

Ini menginstal perpustakaan tetapi saya masih terus mendapatkan kesalahan yang sama, jadi saya harus memulai ulang apache menggunakan:

sudo service apache2 restart

dan itu berhasil.

Mubashar Abbas
sumber
1
Restart apache melakukannya, ketika dikombinasikan dengan solusi @ pekka
gthuo
18

Pertama-tama, Solusi untuk server jarak jauh:

Jika Anda menggunakan cpanel, Anda mungkin telah menginstal ekstensi zip tetapi tidak diaktifkan. Anda harus mengaktifkannya. Untuk kasus ini, Anda perlu pergi ke bagian cpanel> di dalam perangkat lunak> klik pada versi PHP . Kemudian cari zip dan periksa. Sekarang simpan.

Anda akan melihat seperti gambar. masukkan deskripsi gambar di sini

Segarkan halaman. Kesalahan seharusnya hilang.

Catatan: Jika Anda tidak ditemukan, hubungi penyedia server. Mereka akan menginstal untuk Anda.

Kalyan Halder Raaz
sumber
Ini berhasil untuk saya. Saya menggunakan pembuat template dan tidak mau mengekspor. Saya memeriksa kotak centang zip, disimpan dan voila. Terima kasih Kaylan
Hblegg
16

Saya tidak melihatnya di sini, jadi saya ingin menambahkannya di Debian / Ubuntu Anda mungkin perlu mengaktifkan ekstensi setelah menginstal paket relatif. Begitu:

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
lorenzo-s
sumber
2
Instal php7.0-zipuntuk PHP 7.
AnthonyB
JANGAN LUPA RESTART APACHE !!
zzapper
1
Instal php7.1-zip untuk PHP 7.1, php7.2-zip untuk PHP 7.2.
Neo
6

Jika Anda memiliki WHM, itu lebih mudah.

Masuk ke WHM .

Pergi ke EasyApache 4 (atau versi apa pun yang Anda miliki) di bawah tab Software .

Di bawah Paket yang Dipasang Saat Ini klik Kustomisasi .

Pergi ke Ekstensi PHP , dalam jenis pencarian " zip " ( tanpa tanda kutip ),

Anda akan melihat 3 modul

periksa semuanya,

klik tombol biru beberapa kali untuk menyelesaikan proses.

Ini berhasil untuk saya. Untungnya saya sudah WHM tersedia.

temo
sumber
5

Ini berhasil

apt-get install php7.0-zip

dan tidak perlu memulai ulang php7.0-fpmsecara manual.

Membuka kemasan php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Memproses pemicu untuk php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmberhenti / menunggu
php7.0-fpmmulai / berjalan, proses 1572
php7.0-fpmberhenti / tunggu
php7.0-fpmmulai / berjalan, proses 1777
Menyiapkan php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
lokal: Tidak dapat mengatur LC_ALLke lokal default: Tidak ada file seperti itu atau direktori

Membuat file config /etc/php/7.0/mods-available/zip.inidengan versi baru
Memproses pemicu untuk php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmberhenti / menunggu
php7.0-fpmmulai / berjalan, proses 2354
php7.0-fpmberhenti / tunggu
php7.0-fpmmulai / berjalan, proses 2397

prosti
sumber
4

Anda juga perlu mengkompilasi PHP dengan dukungan zip. Manual mengatakan sebagai berikut:

Untuk menggunakan fungsi-fungsi ini, Anda harus mengkompilasi PHP dengan dukungan zip dengan menggunakan opsi --enable-zip configure.

Tidak cukup hanya menginstal ekstensi yang benar di server. Lihat tautan petunjuk pemasangan yang dipasang Pekka sebelumnya. Jawaban saya hanyalah klarifikasi.

Jeremy
sumber
ya, tetapi di mana saya harus menjalankan perintah ini di server sehingga php berjalan dengan dukungan zip
Parag Chaure
Apakah ini server yang Anda kendalikan? Jika demikian, saya yakin itu adalah bagian dari perintah make ketika menginstal PHP. Jika ini bukan server yang Anda kontrol maka satu-satunya pilihan bagi Anda adalah mencoba membuat sys admin melakukannya. Maaf saya tidak bisa lebih tepat - saya tidak pernah menginstal PHP di server linux dari awal.
Jeremy
4

Saya memiliki masalah yang sama dengan CentOS dan server yang diinstal cPanel . Saya menginstal paket zipArchive via cPanel dan tidak berfungsi seperti yang diharapkan. Setelah mencoba dengan begitu banyak perbaikan yang disarankan masing-masing dan di mana saja hanya di bawah ini bekerja untuk saya.

Pertama cari nama untuk paket yang benar dengan perintah di bawah ini

yum search zip |grep -i php

Kemudian gunakan kode di bawah ini.

yum install your_zip_package_name_with_php_version

Dalam kasus saya, kode yang benar untuk menginstal zipArchive tadinya

yum install php-pecl-zip.x86_64

Saya mendapat solusi dari tautan ini. Bagaimana saya bisa memasukkan zipArchive di PHP 7.2 dengan CentOS 7?

Dan instalasi ini entah bagaimana mengaktifkan paket itu juga dan juga me-restart layanan yang berpengaruh dan setelah selesainya eksekusi kode di atas masalah zipArchive hilang.

antonD
sumber
4

Centos 6

yum install php-pecl-zip

service httpd restart
zzapper
sumber
1
Terima kasih. Saya telah menginstal php-pecl-zip, tetapi tanpa me-restart httpd. Akhirnya temukan jawaban Anda!
Ngoc Nam
3

PHP 5.2.0 dan yang lebih baru

Sistem Linux

Untuk menggunakan fungsi-fungsi ini, Anda harus mengkompilasi PHP dengan dukungan zip dengan menggunakan opsi --enable-zip configure.

Windows

Pengguna Windows harus mengaktifkan php_zip.dll di dalam php.ini untuk menggunakan fungsi-fungsi ini.

Vineesh Kalarickal
sumber
3

Saya menghadapi masalah ini pada GCP saat menggunakan wordpress di lingkungan App Engine Standard. Ini menyelesaikannya:

sudo apt-get install php7.2-zip
Omar Shabab
sumber
3

Untuk PHP 7.x

sudo apt-get install php-zip

Untuk PHP 5.x

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

Dan kemudian restart server Apache

sudo service apache2 restart
Santo Boldižar
sumber
1

Untuk Centos 7 dan PHP 7.3 pada Remi

Cari ekstensi zip:

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

Nama ekstensi adalah php73-php-pecl-zip.x86_64 . Untuk menginstalnya di server yang menjalankan versi PHP tunggal, hapus awalan 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

Mulai ulang PHP:

$ sudo systemctl restart php-fpm

Periksa ekstensi PHP yang dipasang:

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

Untuk penggunaan server berbasis CentOS

yum install php-pecl-zip.x86_64

Aktifkan dengan menjalankan: echo "extension=zip.so" >> /etc/php.d/zip.ini

Wolfack
sumber
0

Saya memiliki masalah yang sama dan telah diselesaikan dengan menggunakan dua baris perintah:

sudo apt install php-zip

kemudian reboot server web Anda, untuk Apache

sudo service apache2 restart

AboLnouR
sumber
0

Cobalah untuk menulis \ZIPARCHIVEbukan ZIPARCHIVE.

URL87
sumber
0

Anda perlu memeriksa versi PHP

Jika versi php 5.6 maka, Anda perlu menginstal php5.7-zip

sudo apt-get install php5.6-zip

lalu

sudo service apache2 restart

Semoga ini bisa membantu

Sundar
sumber
-13

1) Anda harus requirefile Anda dengan ZipArchivefile.

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

2) Atau gunakan __autoloadmetode kelas. Dalam PHP 5 itu adalah metode 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/language.oop5.autoload.php

Alex Pliutau
sumber
bagaimana saya harus memasukkan atau membutuhkan file ZipArchive?
Parag Chaure