composer 报错“phar extension is not enabled”是因为 php 未启用 phar 扩展,需确认当前 cli 使用的 php 是否加载了 phar(php -m | grep phar),检查 php.ini 路径(php --ini),取消注释或添加 extension=phar,windows 下还需确保 php_phar.dll 存在且 mbstring 已启用。

Composer 报错 “phar extension is not enabled” 怎么办
直接结论:Composer 依赖 phar 扩展运行,PHP 启动时找不到该扩展,就会报这个错。不是 Composer 安装错了,也不是权限问题,而是 PHP 配置层面缺失关键组件。
确认当前 PHP 是否真没启用 phar 扩展
别急着改配置,先验证问题是否真实存在。执行:
php -m | grep phar
如果没输出,说明确实未加载;如果输出了 phar,那可能是 Composer 调用了另一个 PHP(比如系统自带的旧版本),需检查 which php 和 composer --version 对应的 PHP 路径是否一致。
- 用
php --ini查看实际生效的php.ini路径 - 用
php -v确认 CLI 使用的 PHP 版本 - 某些 Linux 发行版(如 Ubuntu)会把扩展配置拆到
php.ini外的conf.d/目录,注意检查该目录下是否有phar.ini或类似文件被注释或误删
在 php.ini 中启用 phar 扩展的实操步骤
phar 扩展自 PHP 5.3 起默认编译进核心,但部分发行版(尤其是 Docker 镜像或最小化安装)会禁用它。启用方式不是“安装”,而是“解注释”或“显式加载”:
- 打开
php.ini(路径来自php --ini输出) - 搜索
extension=phar—— 如果这一行被分号注释(;extension=phar),删掉前面的; - 如果没找到这行,手动添加:
extension=phar(注意不要加.so或.dll后缀,现代 PHP 会自动识别) - 某些旧版 PHP(如 7.2 以前)可能需要写成
extension=phar.so,但优先尝试无后缀写法 - 保存后重启 Web 服务(如 Apache/Nginx)或确保 CLI 使用的是新配置(可加
-c指定 ini 路径测试)
Windows 下常见坑:dll 文件缺失或路径错误
Windows 用户容易卡在这一步:明明写了 extension=php_phar.dll,却提示“unable to load dynamic library”。这是因为:
-
php_phar.dll文件根本不在ext/目录下(检查php -i | grep extension_dir返回的路径) - PHP 版本和 dll 不匹配(例如用 PHP 8.2 的
php.ini加载了 PHP 7.4 的 dll) - 扩展名写错:必须是
php_phar.dll,不是phar.dll或php-phar.dll - 扩展依赖
php_mbstring.dll,若后者未启用,phar也会静默失败 —— 请一并确认mbstring已开启
验证是否成功:运行 php -m,看到 phar 出现在列表里,再试 composer --version 就不会报错了。
最常被忽略的是多 PHP 版本共存场景:CLI、Web Server、IDE 内置终端可能各自指向不同 php.ini,改完一个不等于全改完。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











