首页 文章

致命错误:找不到类'ZipArchive'

提问于
浏览
121

我有一个问题,我在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 文件放到脚本所在的文件夹中,但它不起作用 .

12 回答

  • -10

    First of all, The solution for remote server:

    如果您使用 cpanel ,则可能已安装zip扩展但未激活 . 你需要激活它 . 在这种情况下,您需要转到 cpanel > inside software section > click on PHP version . 然后找到 zip 并检查它 . 现在保存 .

    You should see like the image.
    enter image description here

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

    注意:如果找不到,请联系服务提供商 . 他们会为你安装 .

  • 69

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

    sudo apt-get install php7.0-zip

  • 25

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

    sudo apt-get install php5.6-zip
    

    这安装了库,但我仍然遇到同样的错误,所以我不得不重启apache:

    sudo service apache2 restart
    

    它工作 .

  • 6

    我想在Debian / Ubuntu上添加它,你可能需要在安装相关软件包之后使用 enable 扩展名 . 所以:

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

    为了ZipArchive class存在,PHP需要安装zip extension .

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

  • 149

    这很有效

    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)... locale:无法将LC_ALL设置为默认语言环境:没有这样的文件或目录使用新版本创建配置文件/etc/php/7.0/mods-available/zip.ini处理触发器for php7.0-fpm(7.0.11-1 deb.sury.org~trusty 1)... php7.0-fpm stop / waiting php7.0-fpm start / running,process 2354 php7.0-fpm stop /等待php7.0-fpm启动/运行,进程2397

  • 2

    您还需要使用zip支持编译PHP . 手册说明如下:

    要使用这些函数,必须使用--enable-zip configure选项编译带zip支持的PHP .

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

  • 1

    PHP 5.2.0及更高版本

    Linux系统

    要使用这些函数,必须使用--enable-zip configure选项编译带zip支持的PHP .

    视窗

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

  • 3

    如果您有WHM可用,则更容易 .

    登录 WHM .

    Software 标签下转到 EasyApache 4(或您拥有的任何版本) .

    在当前安装的包 click Customize 下 .

    转到 PHP Extensions ,搜索类型为“ zip ”(不含引号),

    你应该看到3个模块

    检查所有这些,

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

    这对我有用 . 谢天谢地,我有WHM可用 .

  • 5

    安装服务器的 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问题就消失了 .

  • 0

    Centos 6

    yum install php-pecl-zip
    
    service httpd restart
    
  • 11

    1)你应该使用 ZipArchive 文件 require 你的文件 .

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

    2)或者使用 __autoload 类的方法 . 在PHP 5中,它是一个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

相关问题