【问题标题】:PHPExcel ZipArchive not found未找到 PHPExcel ZipArchive
【发布时间】:2014-08-07 07:51:32
【问题描述】:

我刚刚下载了 PHPExcel 包并尝试导入 Excel 电子表格,但得到的只是错误 ZipArchive not found。我在 Windows 上工作,但服务器在 Linux 上。我检查了php.ini 以查看 php_zip 是否被禁用,但它甚至不存在。

我尝试用 PECL 安装它:$ pecl install zip

No releases availble for package "pecl.php.net/zip" Cannot initialize 'channel://pecl.php.net/zip', invalid or missing package file Package "channel://pecl.php.net/zip" is not valid install failed

还有pear install zip-1.10.2.tgz,但收到了几乎相同的消息。

我没有服务器的root权限,也许是这样?无论如何,你能帮我解决这个问题吗?

【问题讨论】:

  • 我认为 Mark Ba​​ker 可以帮助你,你使用的是什么版本的 PHPExcel?最新版本?
  • 是的,我使用 PHPExcel 1.8.0
  • 您显然不是第一个遇到此错误的人:phpexcel.codeplex.com/discussions/233977。但是,根据我的阅读,您还需要 permissions: prntscr.com/4adzsp 。您是否已启用所有所需的扩展?你能改变PHPExcel文件夹的权限吗?
  • 我什至在 php.ini 文件中都没有 php_zip 行,我自己添加了它......好吧......令人惊讶的是没有用。我有 PHPExcel 文件夹的权限,但 PHP 需要安装 ZipArchive,我不知道如何安装它。
  • 因此,您可能没有两个扩展名(PCLZIP 和 ZipArchive)。如果没有这些扩展,我认为您无法进一步了解,但我建议您在 stackoverflow 中直接联系 Mark Ba​​ker,因为他是 phpexcel 的开发人员之一 :)。编辑:哦,好吧,然后尝试使用它,也许它会起作用,但我建议你无论如何都联系马克贝克,也许他有解决这个问题的方法:)

标签: php phpexcel


【解决方案1】:

某些电子表格文件格式(例如 Excel 2007 及更高版本用作默认格式的 OfficeOpenXML)需要 ZipArchive。在最新版本的 PHP 中,ZipArchive 始终可用,但在 PHP 5.3 之前,它需要作为 PHP 扩展手动安装。

正如@briosheje 所说,如果您没有为您的 PHP 安装/启用 ZipArchive,那么您可以使用

PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);

PCLZip 包含在 PHPExcel 发行版中,作为 PHP 内置 ZipArchive 类的替代品,尽管它的速度要慢一些。启用 PCLZip 后,即使没有 ZipArchive,您也可以使用基于 zip 的电子表格格式。

但是,当我们第一次捆绑 PCLZip(最初在 PHPExcel 1.7.6 中)时,它只是在编写基于 zip 的格式时的一个选项,而不是在阅读它们时。我们在 PHPExcel 1.8.0 中对此进行了更改,因此启用 PCLZip 现在允许您读取和写入基于 zip 的格式。

PHPEXcel 阅读器文档详细介绍了不同的电子表格格式,并解释了哪些是基于 zip 的。

【讨论】:

  • 我在服务器上有PHP 7.0.8,在本地主机上有PHP 5.5.9,两者都有PHPExcel版本1.8.0。在localhost 上一切正常,但在我们的服务器上却不行。最初我收到Class 'ZipArchive' not found in Reader/Excel2007.php:94error。所以我包括PHPExcel_Settings::setZipClass(PHPExcel_Settings::ZIPARCHIVE);。但后来我得到Uncaught Error: Call to undefined method PHPExcel_Shared_ZipArchive::statName() in Reader/OOCalc.php:89。我还尝试通过pecl install zip 安装“zip”模块。但它也不起作用。能否指点一下?
  • sudo apt-get install php7.0-zip 在所有这些步骤之后为我工作......
  • @Chaitanya 解决方案在 php 7 - Ubuntu 16.04 上为我工作。接受的答案是在 Debian Jessie 上达到 php 5.6。
  • 为了完整起见,它也可能与旧的 PHP 安装冲突。例如,一旦我尝试删除 PHP5 安装并重新安装 PHP7 版本,一切正常
  • 这让我很开心。谢谢
【解决方案2】:

就我而言,我有 PHP 5.4
在使用 PHPExcel 时,我遇到了这个异常。

FatalErrorException in Excel2007.php line 94: Class 'ZipArchive' not found

通过在 PHPExcel/Reader/Excel2007.php

上附加这一行来解决它
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);

在调用 getZipClass 方法之前。

$zipClass = PHPExcel_Settings::getZipClass();

【讨论】:

  • 无效。当我包括这一行时。它在同一文件的第 317 行给出错误。
  • 写入文件时出现此错误,因此将其添加到 PHPExcel/Writer/Excel2007.php 的第 220 行。谢谢
【解决方案3】:

你必须在你的 linux 机器上安装名为 php-zip 的 php 扩展和 zip 程序。

【讨论】:

    【解决方案4】:

    我找到了一个简单的解决方案:

    1. 登录您的 cpanel
    2. 进入软件>选择PHP版本
    3. 选择 PHP 7.0 版本并点击设置为当前按钮
    4. 检查 zip 复选框
    5. 点击保存

    现在您刷新站点以下载 excel 文件

    【讨论】:

      【解决方案5】:

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

      刷新您的申请页面。

      【讨论】:

        【解决方案6】:

        简单的方法是插入: PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP); 在你的脚本中调用$objWriter->save();

        这对我有用。

        问候!

        【讨论】:

        • 那是四年多前的what Mark Baker answered。这是作为实际答案,还是只是确认它有效?如果它是一个答案,请解释它比马克的答案有什么附加价值。如果没有,请考虑删除它,因为它没有任何附加价值。
        猜你喜欢
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 1970-01-01
        相关资源
        最近更新 更多