You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel集成phpword读取docx时提示Class ZipArchive not found

解决PHPWord报错「Class 'ZipArchive' not found」的方案

Hey,我来帮你搞定这个问题!虽然你已经在PHP里装了zip扩展,但系统还是找不到ZipArchive类,大概率是扩展没正确加载到运行Laravel的PHP进程里,试试下面这些排查步骤:

  • 确认Web服务器和CLI用的是同一个PHP版本
    很多时候我们在终端看的PHP环境和Web服务器(比如Apache、Nginx+PHP-FPM)用的不是同一个版本。你可以这么验证:

    1. 写个简单的phpinfo()文件放到Laravel的public目录,浏览器访问它,看看zip扩展有没有显示,以及当前PHP的安装路径。
    2. 打开终端执行php -m,看看zip在不在扩展列表里,再对比下PHP版本和路径。
      如果两者不一样,那你得给Web服务器用的那个PHP版本装上并启用zip扩展才行。
  • 重启Web服务器和PHP-FPM(如果用的话)
    装完扩展后必须重启服务才能生效!比如:

    • Apache用户:执行sudo service apache2 restart
    • Nginx+PHP-FPM用户:执行sudo service php8.1-fpm restart(把8.1换成你实际的PHP版本号)
  • 检查Web服务器对应的php.ini配置
    有时候扩展装了,但php.ini里没启用:

    1. 通过刚才的phpinfo()找到Web服务器用的php.ini路径。
    2. 打开这个文件,找extension=zip这一行,确保前面没有分号;(分号代表注释)。
    3. 如果找不到这行,手动加上extension=zip,保存后重启服务。
  • 写个小脚本验证ZipArchive是否可用
    搞个测试脚本放public目录,访问它确认:

    <?php
    if (class_exists('ZipArchive')) {
        echo "ZipArchive类已经加载成功啦!";
    } else {
        echo "还是找不到ZipArchive类...";
    }
    phpinfo();
    ?>
    

    如果显示找不到,那肯定是Web服务器的PHP环境没加载zip扩展,回到前面的步骤再排查。

  • 更新PHPWord相关依赖包
    这个报错来自phpoffice/common包,说不定旧版本有兼容性问题。执行composer update phpoffice/phpword phpoffice/common把依赖更到最新版试试。

要是你用的是宝塔、XAMPP这类集成环境,记得去环境的扩展管理里确认zip扩展已经启用,保存配置后重启服务就行。


内容的提问来源于stack exchange,提问作者Md. Sahadat Hossain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:23:19