Ubuntu上给PHP 8安装zip扩展,核心是匹配实际PHP版本(如php8.2-zip),分别确保CLI和Web环境加载extension=zip,安装后重启对应服务(apache2或php8.2-fpm),并通过php -m | grep zip和phpinfo()双重验证。

Ubuntu 上给 PHP 8 安装 zip 扩展,核心是让 ZipArchive 类在 CLI 和 Web 环境中都可用。关键不是“装一次就行”,而是要匹配你当前实际运行的 PHP 版本,并分别确保命令行(Composer、脚本)和 Web 服务(Apache/Nginx+PHP-FPM)都能加载该扩展。
确认你用的是哪个 PHP 8 版本
Ubuntu 可能同时装了多个 PHP 版本(如 8.0、8.1、8.2、8.3),必须先查清 CLI 和 Web 环境各自用的是哪一个:
- 运行
php -v查 CLI 版本(Composer 依赖这个) - 在 Web 页面中访问
phpinfo(),搜索 Loaded Configuration File,看它加载的是哪个版本的php.ini - 常见情况:CLI 是
php8.2,但 Apache 用的是php8.0—— 那就得分别处理
用 apt 安装对应版本的 php*-zip 包
包名必须严格匹配 PHP 主版本号,漏一位或写错格式都会失败:
- 如果
php -v显示 PHP 8.2.x:执行sudo apt update && sudo apt install php8.2-zip - 如果显示 PHP 8.3.x:执行
sudo apt install php8.3-zip - 别用
php-zip或php82-zip—— 这些在 Ubuntu 22.04+ 中不被识别
安装后,系统会自动在 /etc/php/X.Y/cli/conf.d/ 和 /etc/php/X.Y/apache2/conf.d/(或 fpm/conf.d/)下生成 20-zip.ini,内容为 extension=zip,无需手动编辑 php.ini。
立即学习“PHP免费学习笔记(深入)”;
重启对应的服务
装完不重启 = 白装。根据你用的服务选对应命令:
- 用 Apache:
sudo systemctl restart apache2 - 用 Nginx + PHP-FPM:
sudo systemctl restart php8.2-fpm(把8.2换成你的版本) - 只跑命令行(比如 Composer)?CLI 不需要重启服务,但要确保没缓存旧配置;可临时运行
php --ini确认加载的配置路径是否正确
验证 zip 扩展是否真生效
分两步验证,缺一不可:
-
CLI 验证(最重要,Composer 就靠它):
php -m | grep zip→ 应输出zipphp -r "new ZipArchive(); echo 'ok';"→ 应输出ok,不报错 -
Web 验证:打开
phpinfo()页面,搜索zip,确认看到 zip support ⇒ enabled,且下方列出支持的压缩方法
若 CLI 成功但网页报 Class 'ZipArchive' not found,说明 Web 服务加载的是另一个 PHP 版本的配置,回去检查 phpinfo() 里的 Loaded Configuration File 路径,再针对性安装对应版本的 zip 包。



















