本质是php cli环境中ziparchive类不可用,需确认php.ini路径、启用extension=zip、验证php -r "new ziparchive();"成功,再清缓存执行composer create-project。

在 Windows 11 上用 Composer 创建 ThinkPHP 8.0 项目时,执行 composer create-project topthink/think tp8 报错 The zip extension and unzip/7z commands are both missing, skipping,本质是 PHP CLI 环境中 ZipArchive 类不可用,而非系统没装压缩工具——必须让 php -r "new ZipArchive();" 这行命令不报错才算真正修复。
确认当前 CLI 使用的 PHP 和 php.ini 路径
打开命令提示符,运行 where php 查看实际调用的 PHP 可执行文件路径;再运行 php --ini,重点关注 Loaded Configuration File 行输出的 php.ini 绝对路径。这一步不能跳过,XAMPP/WAMP/手动安装的 PHP 常存在多个 php.ini,改错文件等于白干。
用记事本或 VS Code 打开该 php.ini 文件,搜索 extension_dir,确认其值指向真实存在的目录(如 C:\php\ext),并进入该目录检查是否存在 php_zip.dll 或 zip.dll 文件——PHP 8.0+ 版本必须用 zip.dll,旧版才用 php_zip.dll。
启用 zip 扩展并验证类可用性
在 php.ini 中找到 ;extension=zip 或 ;extension=php_zip.dll 行,删除开头的分号,确保写成 extension=zip(PHP 8.0+ 强制要求去后缀,写 php_zip.dll 会静默失败)。
保存 php.ini 后,关闭所有已打开的命令提示符窗口,重新打开一个全新终端——这是关键动作,否则环境变量和配置不会刷新。运行 php -r "new ZipArchive(); echo 'OK';",若输出 OK,说明类已可用;若报 Fatal error: Class 'ZipArchive' not found,说明扩展未生效或 DLL 文件缺失、版本不匹配。
如果报错,立刻检查 extension_dir 指向的目录下是否有 zip.dll:没有就去 PHP 官网下载对应版本的 Thread Safe (TS) ZIP 扩展包,解压后把 zip.dll 放进去;有但仍报错,大概率是依赖的 libzip.dll 缺失,需一并放入同一目录。
绕过 zip 扩展限制的临时方案
方法一:使用 7-Zip 命令行解压替代
先下载 7-Zip 官方命令行版 7z.exe,将其所在目录加入系统 PATH;然后在项目目录下运行:COMPOSER_UNZIP=7zip composer create-project topthink/think tp8。此方式不依赖 PHP zip 扩展,但要求 7z.exe 可被全局调用。
方法二:强制禁用 zlib 解压(仅应急)
运行 COMPOSER_DISABLE_ZLIB=1 composer create-project topthink/think tp8。这会让 Composer 改用纯 PHP 流式解压,速度极慢且无法处理大包,【不推荐长期使用】。
验证修复结果并创建项目
第一步:确认 Composer 调用的 PHP 是否与你修改的 php.ini 一致——运行 composer diagnose,查看 “PHP binary” 和 “PHP version” 输出,确保它指向你刚配置的那个 PHP。
第二步:清除 Composer 缓存避免复用损坏的 ZIP 包:composer clear-cache。
第三步:执行完整创建命令:composer create-project topthink/think tp8。此时应跳过 zip missing 提示,开始正常下载 dist 包并解压到 vendor 目录。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











