【问题标题】:Fatal error: Class 'ZipArchive' not found in致命错误:找不到类“ZipArchive”
【发布时间】:2010-10-06 12:47:01
【问题描述】:

我在 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文件放到了script所在的文件夹下,但是还是不行。

【问题讨论】:

  • 在 Ubuntu 上使用 sudo apt-get install php7.2-zip
  • @EricKorolev 使用 ubuntu 14.04 和 php 7.2 提供 E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
  • 在 Debian 10 上,它只是 apt-get install php-zip
  • 你可以查看这个帖子:stackoverflow.com/a/60482998/4806585
  • 对于 PHP 8 和 7.4,扩展名是 no longer libzip。你现在用--with-zip 参数编译PHP。并且不要忘记之后重新启动 Apache。

标签: php zip ziparchive


【解决方案1】:

要出现ZipArchive class,PHP 需要安装zip extension

有关安装说明(Linux 和 Windows),请参阅 this page

【讨论】:

  • 可能我无法理解我的所作所为。我使用您提供的用于学习的墨水上的示例并完成脚本。它在我的电脑(本地主机)上工作正常而不是在服务器上。请给它建议
  • 在 ubuntu 服务器上使用 apt-get sudo apt-get install php7.0-zip
  • 简单解决方案:sudo apt-get install php7.0-zip。然后,编辑文件/etc/php/7.0/cli/php.ini(在“动态扩展”部分,添加行extension=zip.so)。这应该解决它
  • 对于 Docker docker-php-ext-install zip
  • 正如@Luddig 在sudo apt-get install php7.0-zip 之后在ubuntu 服务器上提到的,您需要重新启动apache 服务器sudo systemctl restart apache2
【解决方案2】:

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

sudo apt-get install php7.0-zip

【讨论】:

  • apt-get install php7.0-xsl 遇到问题后...别着急 apt-get install php7.0-zip 解决
  • sudo apt-get install php7.1-zip 用于 Ubuntu/php7.1
  • 这不适用于php 7.2,总是说E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
【解决方案3】:

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

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

【讨论】:

  • 为 PHP 7 安装 php7.0-zip
  • 不要忘记 APACHE 重启!!
  • 为 PHP 7.1 安装 php7.1-zip,为 PHP 7.2 安装 php7.2-zip。
  • 据我所知,没有必要指定 PHP 版本。 "sudo apt-get install php-zip" 将选择您的系统 PHP 版本,并且在安装 php7.3 时就足够了
【解决方案4】:

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

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

您应该看到像图片一样。

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

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

【讨论】:

  • 这对我有用。我使用的是模板生成器,它不会导出。我检查了 zip 复选框,保存并瞧。谢谢凯兰
【解决方案5】:

对于我的工作,先审查

   php -m
   php -version

稍后安装扩展

apt-get update 
apt-get install php7.2-zip
systemctl restart apache2

【讨论】:

    【解决方案6】:

    如果您有可用的 WHM,那就更容易了。

    登录 WHM

    转到软件标签下的EasyApache 4(或您拥有的任何版本)。

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

    转到 PHP Extensions,在搜索中输入“zip”(不带引号),

    你应该看到 3 个模块

    检查所有,

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

    这对我有用。 谢天谢地,我有可用的 WHM。

    【讨论】:

    • 选择 3 个 zip 扩展后,转到“Review”,然后点击“Provision”,然后在下一页点击“Done”
    【解决方案7】:

    Centos 6

    或任何基于 RHEL 的风格

    yum install php-pecl-zip
    
    service httpd restart
    

    【讨论】:

    • 谢谢。我已经安装了 php-pecl-zip,但没有重新启动 httpd。终于找到你的答案了!
    【解决方案8】:

    对于 PHP 7.4 > 默认情况下不再存在 ZipArchive,您需要安装和配置它。

    我强烈建议您使用可以包含在项目中的库 - 例如 https://github.com/zanysoft/laravel-zip 这个库只是原生 ZipArchive 的包装器

    【讨论】:

      【解决方案9】:

      在 ubuntu 桌面上,我必须这样做。

      sudo apt-get install php5.6-zip
      

      这安装了库,但我仍然收到同样的错误,所以我不得不使用以下命令重新启动 apache:

      sudo service apache2 restart
      

      它奏效了。

      【讨论】:

      • 结合@pekka的解决方案,重启的apache做到了
      【解决方案10】:

      适用于 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
      

      【讨论】:

        【解决方案11】:

        适用于 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
        

        【讨论】:

          【解决方案12】:

          我在安装 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
          

          我从这个链接得到了解决方案。 How can I inslatt zipArchive on PHP 7.2 with CentOS 7?

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

          【讨论】:

            【解决方案13】:

            如果您在使用 Docker 映像时遇到此错误并且您正在正确调用该类,或者该错误来自最新的库,则可能缺少 zip 模块。

            假设我们使用docker-compose,我们可以通过运行docker-compose run php php -m 来确认它缺失,并看到zip 未列出。

            要将其安装到您的映像中,请修改您的 Dockerfile,使其与本示例相同。

            FROM php:7.3-apache 
            
            RUN set -eux \
                && apt-get update \
                && apt-get install -y libzip-dev zlib1g-dev \
                && docker-php-ext-install zip
            

            然后使用docker-compose build php 重建映像,一切顺利。

            【讨论】:

              【解决方案14】:

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

              sudo apt-get install php7.2-zip
              

              【讨论】:

                【解决方案15】:

                您需要检查PHP版本

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

                sudo apt-get install php5.6-zip
                

                然后

                sudo service apache2 restart
                

                希望对你有帮助

                【讨论】:

                  【解决方案16】:

                  您还需要编译带有 zip 支持的 PHP。手册说:

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

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

                  【讨论】:

                  • 是的,但是我应该在服务器的哪里运行这个命令,以便 php 在 zip 支持下运行
                  • 它是你控制的服务器吗?如果是这样,我相信它是安装 PHP 时 make 命令的一部分。如果它不是您控制的服务器,那么您唯一的选择是尝试让系统管理员执行此操作。抱歉,我不能更准确地说——我从来没有从头开始在 linux 服务器上安装 PHP。
                  • 我可以确认。安装所有这些软件包都不起作用。我不得不使用 --enable-zip 选项再次 ./configure PHP 并再次 make && make install (PHP 7.4.8 debian)。
                  【解决方案17】:

                  供基于 CentOS 的服务器使用

                  yum install php-pecl-zip.x86_64
                  

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

                  【讨论】:

                    【解决方案18】:

                    成功了

                    apt-get install php7.0-zip
                    

                    并且无需手动重启php7.0-fpm

                    解包php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) ...
                    处理 php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) 的触发器 ...
                    php7.0-fpm 停止/等待
                    php7.0-fpm 开始/运行,进程 1572
                    php7.0-fpm 停止/等待
                    php7.0-fpm启动/运行,进程 1777
                    设置php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) ...
                    语言环境:无法将LC_ALL 设置为默认语言环境:没有这样的文件或目录

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

                    【讨论】:

                      【解决方案19】:

                      PHP 5.2.0 及更高版本

                      Linux 系统

                      为了使用这些函数,您必须使用 --enable-zip 配置选项编译支持 zip 的 PHP。

                      窗户

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

                      【讨论】:

                        【解决方案20】:

                        1) 你应该用ZipArchive 文件来require 你的文件。

                        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/en/language.oop5.autoload.php

                        【讨论】:

                        • 我应该如何包含或要求 ZipArchive 文件?
                        【解决方案21】:

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

                        sudo apt install php-zip

                        然后为 Apache 重启你的网络服务器

                        sudo service apache2 restart

                        【讨论】:

                          【解决方案22】:

                          尝试写\ZIPARCHIVE而不是ZIPARCHIVE

                          【讨论】:

                            【解决方案23】:

                            命名空间

                            如果您在添加 namespace 后遇到此问题,您可以使用 global 命名空间(反斜杠 \ ):

                            $zip = new \ZipArchive;
                            

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2014-10-03
                              • 1970-01-01
                              • 1970-01-01
                              • 2011-09-08
                              • 2011-12-17
                              • 2018-12-21
                              相关资源
                              最近更新 更多