Erro fatal: a classe 'ZipArchive' não foi encontrada em

181

Tenho um problema ao instalar o 'Archive_Zip 0.1.1' no servidor Linux, mas quando tento executar o script para criar o arquivo zip, ele gera o erro fatal

Erro fatal: Classe ZipArchivenão encontrada em ...

onde eu coloquei o código

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

mas não encontra o arquivo de classe.

Por favor me diga a solução. O que devo fazer para resolver o problema? Também coloquei o php.iniarquivo na pasta onde está o script, mas não funciona.

Parag Chaure
fonte
7
No uso do Ubuntusudo apt-get install php7.2-zip
Eric Korolev
1
@EricKorolev que dão E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'usando ubuntu 14,04 com php 7,2
Muhammad Omer Aslam
1
No Debian 10, é simplesmente apt-get install php-zip.
aexl 25/02
Você pode visualizar esta publicação: stackoverflow.com/a/60482998/4806585
VishalParkash

Respostas:

207

Para a ZipArchiveclasse estar presente, o PHP precisa ter a extensão zip instalada.

Consulte esta página para obter instruções de instalação (Linux e Windows).

Pekka
fonte
1
possivelmente não sou capaz de entender o que faço. Uso os exemplos fornecidos nas tintas fornecidas para estudo e concluo o script. funcionando bem no meu pc (localhost) e não no servidor. sugestões por favor
Parag Chaure
49
No servidor ubuntu usando o apt-getsudo apt-get install php7.0-zip
Luddig
9
Solução simples: sudo apt-get install php7.0-zip. Em seguida, edite o arquivo /etc/php/7.0/cli/php.ini(na seção "Extensões dinâmicas", adicione a linha extension=zip.so). Isso deve resolver o problema
JonyD 2/16
21
Para Dockerdocker-php-ext-install zip
David Riccitelli
11
Como mencionado por @Luddig no servidor ubuntu depois sudo apt-get install php7.0-zipvocê precisará reiniciar o servidor apachesudo systemctl restart apache2
hashmi
82

No Amazon ec2 com Ubuntu + nginx + php7, tive os mesmos problemas, resolvi-o usando:

sudo apt-get install php7.0-zip

star18bit
fonte
depois de apt-get install php7.0-xsl tem o problema ... não se preocupe apenas apt-get install php7.0-zip para resolver
bortunac
sudo apt-get install php7.1-zippara Ubuntu / php7.1
Nino Škopac
isso não funciona com php 7.2e sempre dizE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam
39

Na área de trabalho do ubuntu, eu tinha que fazer.

sudo apt-get install php5.6-zip

Isso instalou a biblioteca, mas eu continuava recebendo o mesmo erro, então tive que reiniciar o apache usando:

sudo service apache2 restart

e funcionou.

Mubashar Abbas
fonte
1
O apache reiniciar o fez, quando combinado com @ Pekka solução
gthuo
18

Primeiro de tudo, a solução para servidor remoto:

Se você estiver usando o cpanel, poderá ter a extensão zip instalada, mas não ativada. Você precisa ativá-lo. Nesse caso, você precisa ir para cpanel> seção de software>> clicar na versão PHP . Em seguida, encontre o zip e verifique. Agora salve.

Você deve ver como a imagem. insira a descrição da imagem aqui

Atualizar a página. O erro deve desaparecer.

Nota: Se você não encontrou, entre em contato com o provedor do servidor. Eles serão instalados para você.

Kalyan Halder Raaz
fonte
Isso funcionou para mim. Eu estava usando um construtor de modelos e ele não seria exportado. Marquei a caixa de seleção zip, salvei e pronto. Obrigado Kaylan
Hblegg
16

Não estou vendo aqui, então gostaria de acrescentar que no Debian / Ubuntu você pode precisar habilitar a extensão após a instalação do pacote relativo. Assim:

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
Lorenzo-s
fonte
2
Instale php7.0-zippara PHP 7.
AnthonyB 20/10
NÃO ESQUEÇA O REINÍCIO DO APACHE !!
Zzapper 10/10
1
Instale o php7.1-zip para PHP 7.1, php7.2-zip para PHP 7.2.
Neo
6

Se você tem o WHM disponível, é mais fácil.

Faça login no WHM .

Vá para EasyApache 4 (ou qualquer outra versão que você tenha) na guia Software .

Em Pacotes atualmente instalados, clique em Personalizar .

Vá para extensões PHP , no tipo de pesquisa " zip " ( sem aspas ),

você deve ver 3 módulos

verifique todos eles,

clique no botão azul algumas vezes para concluir o processo.

Isso funcionou para mim. Felizmente eu tenho WHM disponível.

temo
fonte
5

Isso funcionou

apt-get install php7.0-zip

e não há necessidade de reiniciar php7.0-fpmmanualmente.

Descompactando php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Processando gatilhos para php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmparar / aguardar
php7.0-fpminício / execução, processo 1572
php7.0-fpmparar / aguardar
php7.0-fpminício / execução, processo 1777
Configurando php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
código do idioma: Não é possível definir o LC_ALLcódigo do idioma padrão: esse arquivo não existe ou diretório

Criando arquivo de configuração /etc/php/7.0/mods-available/zip.inicom nova versão
Processando gatilhos para php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmparar / aguardar
php7.0-fpminício / execução, processo 2354
php7.0-fpmparar / aguardar
php7.0-fpminício / execução, processo 2397

prosti
fonte
4

Você também precisa compilar o PHP com suporte a zip. O manual diz o seguinte:

Para usar essas funções, você deve compilar o PHP com suporte a zip usando a opção --enable-zip configure.

Não basta instalar as extensões corretas no servidor. Dê uma olhada no link de instruções de instalação que Pekka postou anteriormente. Minha resposta é apenas um esclarecimento dele.

Jeremy
fonte
sim, mas onde eu deveria executar este comandos no servidor para que o PHP é executado com o apoio zip
Parag Chaure
É um servidor que você controla? Nesse caso, acredito que faça parte do comando make ao instalar o PHP. Se não for um servidor que você controla, a única opção é tentar que o administrador do sistema faça isso. Desculpe, não posso ser mais preciso - nunca instalei o PHP em um servidor Linux a partir do zero.
Jeremy
4

Eu tive o mesmo problema com o CentOS e o cPanel servidor instalado . Instalei o pacote zipArchive via cPanel e não funcionou conforme o esperado. Depois de tentar com tantas correções sugeridas em todos os lugares, apenas o abaixo funcionou para mim.

Primeiro, encontre o nome do pacote correto com o comando abaixo

yum search zip |grep -i php

Em seguida, use o código abaixo.

yum install your_zip_package_name_with_php_version

No meu caso, o código correto para instalar o zipArchive foi

yum install php-pecl-zip.x86_64

Eu tive a solução deste link. Como posso instalar o zipArchive no PHP 7.2 com o CentOS 7?

E essa instalação de alguma forma também habilitou esse pacote e também reiniciou os serviços afetados e após a conclusão da execução do problema do zipArchive do código acima ter desaparecido.

antonD
fonte
4

Centos 6

yum install php-pecl-zip

service httpd restart
zzapper
fonte
1
Obrigado. Eu instalei o php-pecl-zip, mas sem reiniciar o httpd. Finalmente encontrei sua resposta!
Ngoc Nam
3

PHP 5.2.0 e posterior

Sistemas Linux

Para usar essas funções, você deve compilar o PHP com suporte a zip usando a opção --enable-zip configure.

janelas

Os usuários do Windows precisam ativar o php_zip.dll dentro do php.ini para usar essas funções.

Vineesh Kalarickal
fonte
3

Eu enfrentei esse problema no GCP ao implantar o wordpress no ambiente do App Engine Standard. Isso resolveu:

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

Para PHP 7.x

sudo apt-get install php-zip

Para PHP 5.x

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

E, em seguida, reinicie o servidor Apache

sudo service apache2 restart
Santo Boldižar
fonte
1

Para Centos 7 e PHP 7.3 no Remi

Procure a extensão zip:

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

O nome da extensão é php73-php-pecl-zip.x86_64 . Para instalá-lo no servidor executando a versão única do PHP, remova o prefixo 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

Reinicie o PHP:

$ sudo systemctl restart php-fpm

Verifique as extensões PHP instaladas:

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

Para uso do servidor baseado no CentOS

yum install php-pecl-zip.x86_64

Habilite-o executando: echo "extension=zip.so" >> /etc/php.d/zip.ini

Wolfack
fonte
0

Eu tive o mesmo problema e ele resolveu usando duas linhas de comando:

sudo apt install php-zip

depois reinicie o servidor da web, para o Apache

sudo service apache2 restart

AboElnouR
fonte
0

Tente escrever em \ZIPARCHIVEvez de ZIPARCHIVE.

URL87
fonte
0

Você precisa verificar a versão do PHP

Se a versão do php for 5.6, será necessário instalar o php5.7-zip

sudo apt-get install php5.6-zip

e depois

sudo service apache2 restart

Espero que ajude

Sundar
fonte
-13

1) Você deve o requireseu arquivo com o ZipArchivearquivo.

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

2) Ou use o __autoloadmétodo de classe. No PHP 5, é um método 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
fonte
como devo incluir ou exigir o arquivo ZipArchive?
Parag Chaure 6/10/10