致命错误:找不到类“ ZipArchive”


179

我有一个问题,我在Linux服务器上安装了“ Archive_Zip 0.1.1”,但是当我尝试运行脚本来创建zip文件时,却出现了致命错误

致命错误:ZipArchive在...中找不到类

我把代码放在哪里

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

但找不到类文件。

请告诉我解决方案。我该怎么办才能解决问题?我也将php.ini文件放到脚本所在的文件夹中,但是它不起作用。


6
在Ubuntu上使用sudo apt-get install php7.2-zip
Eric Korolev

1
@EricKorolev给出E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'使用ubuntu 14.04与php 7.2的组合
穆罕默德·奥默·阿斯兰

1
在Debian 10上,它很简单apt-get install php-zip
aexl

Answers:


207

对于要显示的ZipArchive,PHP需要安装zip扩展名

有关安装说明,请参见此页面(Linux和Windows)。


1
可能我听不懂我在做什么。我使用您提供的用于学习和完成脚本的墨水上给出的示例。它在我的电脑(本地主机)上正常工作,而不在服务器上工作。请给它建议
Parag Chaure

49
在使用apt-get的ubuntu服务器上sudo apt-get install php7.0-zip
Luddig

9
简单的解决方案:sudo apt-get install php7.0-zip。然后,编辑文件/etc/php/7.0/cli/php.ini(在“动态扩展名”部分中,添加行extension=zip.so)。这应该可以解决
JonyD '16

21
对于Dockerdocker-php-ext-install zip
David Riccitelli,2016年

11
正如@Luddig在ubuntu服务器上提到的,sudo apt-get install php7.0-zip您将需要重新启动apache服务器之后sudo systemctl restart apache2
hashmi

82

在具有Ubuntu + nginx + php7的Amazon ec2上,我遇到了相同的问题,可以使用以下方法解决:

sudo apt-get install php7.0-zip


在apt-get install php7.0-xsl出现问题之后...不用担心,只需apt-get install php7.0-zip即可解决
bortunac

sudo apt-get install php7.1-zipfor Ubuntu / php7.1
NinoŠkopac'02

这不起作用php 7.2并且总是说E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
穆罕默德·奥默·阿斯兰

38

在ubuntu桌面上,我必须做。

sudo apt-get install php5.6-zip

这样就安装了库,但是我仍然继续遇到相同的错误,因此我不得不使用以下命令重新启动apache:

sudo service apache2 restart

而且有效。


与@pekka解决方案结合使用时,重新启动的Apache做到了
gthuo

18

首先,远程服务器的解决方案:

如果您使用的是cpanel,则可能安装了zip扩展名,但未激活。您需要激活它。对于这种情况,您需要转到cpanel>软件内部>单击PHP版本。然后找到zip并进行检查。现在保存。

您应该看到像图像一样的图像。 在此处输入图片说明

刷新页面。该错误应消失。

注意:如果找不到,请与服务器提供商联系。他们将为您安装。


这对我有用。我正在使用模板构建器,但无法导出。我检查了zip复选框,保存并确认。谢谢
Kaylan

16

我在这里没有看到它,因此我想在Debian / Ubuntu上添加它,您可能需要在安装相关软件包后启用扩展。所以:

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

2
php7.0-zip为PHP 7 安装
。– AnthonyB

不要忘记重新启动!
zzapper

1
为PHP 7.1安装php7.1-zip,为PHP 7.2安装php7.2-zip。
Neo

6

如果您有WHM,它会更容易。

登录到WHM

转到“ 软件”选项卡下的EasyApache 4(或您拥有的任何版本)。

在“当前安装的软件包”下,单击“自定义”

转到PHP扩展,在搜索类型“ zip ”(不带引号)中,

您应该看到3个模块

检查所有的,

单击几次蓝色按钮以完成该过程。

这对我有用。幸好我有WHM。


5

这工作

apt-get install php7.0-zip

无需php7.0-fpm手动重启。

开箱php7.0-zip7.0.16-4+deb.sury.org~trusty+1)...
加工触发器,php7.0-fpm7.0.11-1+deb.sury.org~trusty+1)...
php7.0-fpm停止/等待
php7.0-fpm开始/运行,过程1572
php7.0-fpm停止/等待
php7.0-fpm开始/运行,处理1777
设置php7.0-zip7.0.16-4+deb.sury.org~trusty+1)...
区域:不能设置LC_ALL为默认的语言环境:没有这样的文件或目录

/etc/php/7.0/mods-available/zip.ini使用新版本创建配置文件
处理php7.0-fpm7.0.11-1+deb.sury.org~trusty+1)...的触发器...
php7.0-fpm停止/等待
php7.0-fpm启动/运行,过程2354
php7.0-fpm停止/等待
php7.0-fpm启动/运行,过程2397


4

您还需要使用zip支持来编译PHP。该手册指出:

为了使用这些功能,您必须使用--enable-zip configure选项编译具有zip支持的PHP。

仅仅在服务器上安装正确的扩展是不够的。看看前面发布的Pekka的安装说明链接。我的回答只是对他的澄清。


是的,但是我应该在服务器上的哪个位置运行该命令,以使php在zip支持下运行
Parag Chaure 2010年

它是您控制的服务器吗?如果是这样,我相信它是安装PHP时make命令的一部分。如果不是您控制的服务器,那么唯一的选择就是尝试让sys admin来做。抱歉,我不能更精确-我从未从头开始在Linux服务器上安装PHP。
杰里米

4

我在CentOScPanel安装的服务器上遇到了相同的问题。我通过cPanel安装了zipArchive软件包,但未按预期工作。在尝试了许多修复程序后,建议每个地方都只能使用以下内容。

首先使用以下命令找到正确软件包的名称

yum search zip |grep -i php

然后使用下面的代码。

yum install your_zip_package_name_with_php_version

就我而言,安装zipArchive的正确代码是

yum install php-pecl-zip.x86_64

我从此链接获得了解决方案。 如何在带有CentOS 7的PHP 7.2上安装zipArchive?

此安装也以某种方式启用了该程序包,并且还重新启动了影响服务,并且在完成上述代码zipArchive的执行后,该问题消失了。


4

Centos 6

yum install php-pecl-zip

service httpd restart

1
谢谢。我已经安装了php-pecl-zip,但是没有重新启动httpd。终于找到了答案!
Ngoc Nam

3

PHP 5.2.0及更高版本

Linux系统

为了使用这些功能,您必须使用--enable-zip configure选项编译具有zip支持的PHP。

视窗

Windows用户需要在php.ini中启用php_zip.dll才能使用这些功能。


3

在App Engine标准环境中部署wordpress时,我在GCP上遇到了此问题。这解决了它:

sudo apt-get install php7.2-zip

3

对于PHP 7.x

sudo apt-get install php-zip

对于PHP 5.x

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

然后重启Apache服务器

sudo service apache2 restart

1

对于Remi上的Centos 7和PHP 7.3

搜索zip扩展名:

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

扩展名是php73-php-pecl-zip.x86_64。要将其安装在运行单个PHP版本的服务器中,请删除前缀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

重新启动PHP:

$ sudo systemctl restart php-fpm

检查已安装的PHP扩展:

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

1

对于基于CentOS的服务器使用

yum install php-pecl-zip.x86_64

通过运行启用它: echo "extension=zip.so" >> /etc/php.d/zip.ini


0

我遇到了同样的问题,它使用两个命令行解决了:

sudo apt install php-zip

然后重新启动您的Web服务器(对于Apache)

sudo service apache2 restart



0

您需要检查PHP版本

如果php版本是5.6,则需要安装php5.7-zip

sudo apt-get install php5.6-zip

然后

sudo service apache2 restart

希望能帮助到你


-13

1)您应该require将文件与ZipArchive文件一起使用。

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

2)或者使用__autoload类的方法。在PHP 5中,它是一个很棒的方法__autoload()。

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

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

http://www.php.net/manual/zh/language.oop5.autoload.php


我应该如何包含或要求ZipArchive文件?
Parag Chaure 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.