php - 在 PHPExcel 中找不到类 'ZipArchive'

标签 php excel phpexcel

我在一个名为“集体访问”的程序中收到以下错误,但由于我以前从未遇到过此类问题,所以我不确定从这里该去哪里:

PHP Fatal error:  Uncaught Error: Class 'ZipArchive' not found in /var/www/html/providence/app/lib/core/Parsers/PHPExcel/PHPExcel/Reader/Excel2007.php:94
Stack trace:
#0 /var/www/html/providence/app/lib/core/Parsers/PHPExcel/PHPExcel/IOFactory.php(268): PHPExcel_Reader_Excel2007->canRead('project/mapping...')
#1 /var/www/html/providence/app/lib/core/Parsers/PHPExcel/PHPExcel/IOFactory.php(191): PHPExcel_IOFactory::createReaderForFile('project/mapping...')
#2 /var/www/html/providence/app/models/ca_data_importers.php(768): PHPExcel_IOFactory::load('project/mapping...')
#3 /var/www/html/providence/app/lib/ca/Utils/CLIUtils.php(1147): ca_data_importers::loadImporterFromFile('project/mapping...', Array, Array)
#4 /var/www/html/providence/support/bin/caUtils(166): CLIUtils::load_import_mapping(Object(Zend_Console_Getopt))
#5 {main}
  thrown in /var/www/html/providence/app/lib/core/Parsers/PHPExcel/PHPExcel/Reader/Excel2007.php on line 94

PS - 这是它所引用的文件第 94 行周围的代码:

$xl = false;
    // Load file
    $zip = new $zipClass;
    if ($zip->open($pFilename) === true) {
        // check if it is an OOXML archive
        $rels = simplexml_load_string($this->_getFromZipArchive($zip, "_rels/.rels"), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions());
        if ($rels !== false) {
            foreach ($rels->Relationship as $rel) {
                switch ($rel["Type"]) {
                    case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument":
                        if (basename($rel["Target"]) == 'workbook.xml') {
                            $xl = true;
                        }
                        break;

                }
            }
        }
        $zip->close();
    }

    return $xl;
}

编辑

我在 php 中使用 7.0.15-0ubuntu0.16.04.4(或者 Ubuntu Server 16.04.4 上的版本 7.0)

最佳答案

ZipArchive 类由 Zip PHP extension 提供据its documentation需要在 PHP 编译(在 Linux 上)或 php.ini 中启用(在 Windows 上)。

该扩展很有可能在您的系统上不可用。写<?php phpinfo();在一个新文件中,在浏览器中打开它(通过网络服务器)并检查 Zip 扩展是否已编译或启用。

如果您的脚本是命令行工具,则运行 phpinfo() 使用 PHP CLI 编写文件或直接在终端中运行:

$ php -m

查看已加载的扩展(模块)列表或

$ php -i

查看 phpinfo() 显示的完整信息.

关于php - 在 PHPExcel 中找不到类 'ZipArchive',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45766488/

相关文章:

excel - 获取 Pandas 中具有特定值的单元格的行和列

php - 如何每30条记录换行

php - 通过坐标获取单元格

php - PyCharm - 社区版是否能够突出显示 php?

通过代理的 PHP 套接字连接

php/mysql 数据库重新设计和迁移 : changing databases to tables

PHPExcel:以像素为单位设置行高

php - Mysql结果限制输出

vba - Excel VBA 使用范围选择整个工作表

VBA Excel 更改斜体并添加 </and/>