Önemli hata: 'ZipArchive' sınıfı bulunamadı


181

Linux sunucusuna 'Archive_Zip 0.1.1' yüklediğim bir sorun var, ancak zip dosyasını oluşturmak için komut dosyasını çalıştırmaya çalıştığımda ölümcül hata veriyor

Önemli hata: Sınıf şu konumda ZipArchivebulunamadı ...

kodu nereye koydum

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

ancak sınıf dosyasını bulamaz.

Lütfen bana çözümü söyle. Sorunu çözmek için ne yapmalıyım? Ben de php.inikomut dosyası olduğu klasöre dosya koymak , ama çalışmıyor.


7
Ubuntu kullanımı hakkındasudo apt-get install php7.2-zip
Eric Korolev

1
E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'Php 7.2 ile ubuntu 14.04 kullanarak veren @EricKorolev
Muhammad Omer Aslam

1
Debian 10'da, basitçe apt-get install php-zip.
aexl

Bu yayını görüntüleyebilirsiniz: stackoverflow.com/a/60482998/4806585
VishalParkash

Yanıtlar:


207

İçin ZipArchivesınıf mevcut olması, PHP olması gerekir zip uzantısını yüklü.

Yükleme talimatları için bu sayfaya bakın (hem Linux hem de Windows).


1
muhtemelen ne yaptığımı anlayamıyorum. Çalışmak ve senaryoyu tamamlamak için verdiğiniz mürekkeplerde verilen örnekleri kullanıyorum. benim pc (localhost) ve sunucuda iyi çalışıyor. lütfen bunun için öneriler
Parag Chaure

49
sudo apt-get install php7.0-zip
Ubuntu

9
Basit çözüm: sudo apt-get install php7.0-zip. Ardından, dosyayı düzenleyin /etc/php/7.0/cli/php.ini("Dinamik Uzantılar" bölümünde satırı ekleyin extension=zip.so). Bu
çözmeli

21
Docker içindocker-php-ext-install zip
David Riccitelli

11
sudo apt-get install php7.0-zipApache sunucusunu yeniden başlatmanız gerekecek ubuntu sunucusunda @Luddig tarafından belirtildiği gibisudo systemctl restart apache2
hashmi

82

Ubuntu + nginx + php7 ile Amazon ec2'de aynı sorunları yaşadım, kullanarak çözdüm:

sudo apt-get install php7.0-zip


apt-get install sonra php7.0-xsl sorunu var ... merak etmeyin sadece apt-get install çözmek için php7.0-zip
bortunac

sudo apt-get install php7.1-zip/ php7.1
Nino Škopac için

bu işe yaramıyor php 7.2ve her zaman diyorE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammed Ömer Aslam

39

Ubuntu masaüstünde yapmak zorundaydım.

sudo apt-get install php5.6-zip

Bu kütüphane yüklü ama yine de aynı hatayı almaya devam etti, bu yüzden kullanarak apache yeniden başlatmak zorunda kaldı:

sudo service apache2 restart

ve işe yaradı.


1
Yeniden başlatılan apache, @ pekka'nın çözümü ile birleştiğinde bunu yaptı
gthuo

18

Her şeyden önce, uzak sunucu için çözüm:

Cpanel kullanıyorsanız , zip uzantısını yüklemiş olabilir, ancak etkinleştirmemiş olabilirsiniz. Etkinleştirmeniz gerekiyor. Bu durumda cpanel> yazılımın içinde bölümüne gitmeniz > PHP sürümüne tıklamanız gerekir . Sonra bulmak zip ve kontrol edin. Şimdi kaydedin.

Resim gibi görmelisin. resim açıklamasını buraya girin

Sayfayı yenile. Hata ortadan kalkmalıdır.

Not: Bulamazsanız, sunucu sağlayıcısına başvurun. Sizin için kuracaklar.


Bu benim için çalıştı. Bir şablon oluşturucu kullanıyordum ve dışa aktarmayacaktı. Zip onay kutusunu işaretledim, kaydedildim ve kaydedildim. Teşekkür ederim Kaylan
Hblegg

16

Burada görmüyorum, bu yüzden Debian / Ubuntu'da göreceli paketi yükledikten sonra uzantıyı etkinleştirmeniz gerekebilir . Yani:

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

2
php7.0-zipPHP 7 için yükleyin .
AnthonyB

APACHE YENİDEN BAŞLATMAYI UNUTMAYIN !!
2018

1
PHP 7.1 için php7.1-zip, PHP 7.2 için php7.2-zip kurun.
Neo

6

WHM'iniz varsa daha kolaydır.

WHM oturumu açın .

Git EasyApache 4 (ya da her türlü versiyonu u var) altında Yazılım sekmesi.

Şu Anda Yüklü Paketler altında Özelleştir'e tıklayın .

Git PHP Uzantıları "arama tipinde, zip (" tırnak işareti olmadan )

3 modül görmelisin

hepsini kontrol et,

İşlemi tamamlamak için mavi düğmeye birkaç kez tıklayın.

Bu benim için çalıştı. Neyse ki kullanılabilir WHM.


5

Bu işe yaradı

apt-get install php7.0-zip

ve php7.0-fpmmanuel olarak yeniden başlatmaya gerek yoktur .

Ambalajın açılması php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1...)
için İşleme tetikler php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1...)
php7.0-fpmdur / bekleme
php7.0-fpmbaşlat / çalışan, süreç 1572
php7.0-fpmdurdurma / bekletme
php7.0-fpmbaşlat / çalışan, süreç 1777
kurma php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1...)
belirlenemiyor: yerel LC_ALLvarsayılan yerel ayarına: Böyle dosyası veya dizin

/etc/php/7.0/mods-available/zip.iniYeni sürüm ile yapılandırma dosyası oluşturma ( ) ... durdur / bekle başlat / çalıştır, işlem 2354 durdur / bekle başlat / çalıştır, işlem 2397
için tetikleyiciler işleniyor php7.0-fpm7.0.11-1+deb.sury.org~trusty+1
php7.0-fpm
php7.0-fpm
php7.0-fpm
php7.0-fpm


4

Ayrıca PHP'yi zip desteğiyle derlemeniz gerekir. Kılavuz şunları söylüyor:

Bu işlevleri kullanabilmek için --enable-zip configure seçeneğini kullanarak PHP'yi zip desteğiyle derlemelisiniz.

Doğru uzantıları sunucuya yüklemek yeterli değildir. Daha önce yayınlanan kurulum talimatları bağlantısına bir göz atın. Cevabım sadece onun bir açıklaması.


evet, ama php zip desteği ile çalışır böylece sunucuda bu komutları çalıştırmak gerekir
Parag Chaure

Kontrol ettiğiniz bir sunucu mu? Eğer öyleyse PHP yüklerken make komutunun bir parçası olduğuna inanıyorum. Kontrol ettiğiniz bir sunucu değilse, sizin için tek seçenek sys admin'in bunu yapmasını denemektir. Üzgünüm daha hassas olamıyorum-sıfırdan bir linux sunucusuna PHP kurmadım.
Jeremy

4

CentOS ve cPanel yüklü sunucu ile aynı sorunu yaşadım . ZipArchive paketini cPanel aracılığıyla yükledim ve beklendiği gibi çalışmadı. O kadar çok düzeltme denedikten sonra her yerde önerilen aşağıda sadece benim için çalıştı.

Önce aşağıdaki komutla doğru paketin adını bulun

yum search zip |grep -i php

Sonra aşağıdaki kodu kullanın.

yum install your_zip_package_name_with_php_version

Benim durumumda zipArchive yüklemek için doğru kod oldu

yum install php-pecl-zip.x86_64

Bu bağlantıdan bir çözüm buldum. CentOS 7 ile PHP 7.2'de zipArchive'ı nasıl ekleyebilirim?

Ve bu kurulum bir şekilde bu paketi de etkinleştirdi ve aynı zamanda etkili hizmetleri yeniden başlattı ve yukarıdaki kod zipArchive sorununun yürütülmesi tamamlandıktan sonra gitti.


4

Centos 6

yum install php-pecl-zip

service httpd restart

1
Teşekkür ederim. Ben php-pecl-zip yükledim, ama httpd yeniden başlatmadan. Sonunda cevabını buldum!
Ngoc Nam

4

PHP 7.x için

sudo apt-get install php-zip

PHP 5.x için

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

Ve sonra Apache sunucusunu yeniden başlatın

sudo service apache2 restart

3

PHP 5.2.0 ve üstü

Linux sistemleri

Bu işlevleri kullanabilmek için --enable-zip configure seçeneğini kullanarak PHP'yi zip desteğiyle derlemelisiniz.

pencereler

Windows kullanıcılarının bu işlevleri kullanabilmeleri için php.ini içinde php_zip.dll dosyasını etkinleştirmeleri gerekir.


3

App Engine Standart ortamında wordpress'i dağıtırken GCP'de bu sorunla karşılaştım. Bu çözdü:

sudo apt-get install php7.2-zip

1

Remi'de Centos 7 ve PHP 7.3 için

Zip uzantısını arayın:

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

Uzantı adı php73-php-pecl-zip.x86_64 . PHP'nin tek sürümünü çalıştıran sunucuya kurmak için php73 önekini kaldırın:

$ 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

PHP'yi yeniden başlat:

$ sudo systemctl restart php-fpm

Yüklü PHP uzantılarını kontrol edin:

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

1

CentOS tabanlı sunucu kullanımı için

yum install php-pecl-zip.x86_64

Çalıştırarak etkinleştirin: echo "extension=zip.so" >> /etc/php.d/zip.ini


0

Aynı sorunu yaşadım ve iki komut satırı kullanarak çözüldü:

sudo apt install php-zip

sonra Apache için web sunucunuzu yeniden başlatın

sudo service apache2 restart


0

\ZIPARCHIVEBunun yerine yazmaya çalışın ZIPARCHIVE.


0

PHP sürümünü kontrol etmeniz gerekiyor

Php sürümü 5.6 ise, php5.7-zip yüklemeniz gerekir

sudo apt-get install php5.6-zip

ve sonra

sudo service apache2 restart

Umarım yardımcı olur


-13

1) requireDosyanızı dosya ile yapmalısınız ZipArchive.

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

2) Veya __autoloadsınıf yöntemini kullanın . PHP 5'te __autoload () yöntemiyle bir greate yöntemidir.

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


ZipArchive dosyasını nasıl eklemeliyim veya zorunlu tutmalıyım?
Parag Chaure
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.