Composer报curl缺失是因PHP CLI未加载该扩展,需先用php --ini定位CLI配置文件,再通过apt install phpX.Y-curl(Linux)或启用php.ini中extension=curl(Windows)解决,并用php -m | grep curl验证。

Composer 报 The requested PHP extension curl is missing,说明 PHP CLI 环境根本没加载 curl 扩展——不是 Composer 的问题,也不是网络问题,就是你当前执行 composer 命令用的 PHP 缺这个模块。
确认 Composer 实际用的是哪个 PHP 和 php.ini
很多人改了 Apache 的 php.ini,结果 composer install 还是报错,因为 Composer 默认走的是 CLI 模式,跟 Web 服务用的不是同一份配置。
- 运行
php -v和composer --version,看 PHP 版本是否一致 - 运行
php --ini,重点看 “Loaded Configuration File” 输出的路径(比如/etc/php/8.2/cli/php.ini) - 运行
php -m | grep curl,如果没输出,就证实扩展确实没启用 - 如果你用 Docker、Laragon、MAMP 或自定义 PHP 安装,
which php和php --ini的结果可能完全不同,别凭经验猜
Linux(Ubuntu/Debian)下快速安装并启用 curl 扩展
系统源安装的 PHP,扩展包名和启用方式是固定的,手动改 php.ini 反而容易出错。
- 先查你当前 PHP 版本:
php -v(例如显示PHP 8.2.15) - 安装对应扩展包:
sudo apt install php8.2-curl(版本号必须严格匹配) - 安装后会自动在
/etc/php/8.2/cli/conf.d/下生成20-curl.ini,不用手写extension=curl - 验证:
php -m | grep curl应该直接输出curl - 如果仍不生效,检查
php --ini中 “Scan for additional .ini files in” 路径下是否存在该文件,以及是否被其他 ini 文件覆盖(比如99-disable-all.ini)
Windows(XAMPP/WAMP)启用 curl 的关键操作
Windows 下常见问题是改错了 php.ini 文件,或者 DLL 文件根本不存在。
- XAMPP CLI 和 Apache 用的是两份
php.ini:CLI 用\xampp\php\php.ini,Apache 用\xampp\apache\bin\php.ini - 打开 CLI 对应的
php.ini,搜索;extension=curl或;extension=php_curl.dll,去掉分号 - 确认
extension_dir指向正确(如extension_dir = "ext"),且php\ext\php_curl.dll文件真实存在 - 重启命令行终端(不是浏览器!),再运行
php -m | grep curl - WAMP 用户更简单:托盘图标 →
PHP → PHP extensions→ 勾选php_curl,它会自动处理 ini 和重启
curl 已装但 Composer 仍报错?重点查这三处
扩展名对、ini 文件启用了、so/dll 文件也存在,还报错?大概率是路径或加载顺序出了问题。
- 运行
php -r "echo ini_get('extension_dir');",确认输出路径下真有curl.so(Linux/macOS)或php_curl.dll(Windows) - 运行
php --ini,看 “Scan for additional .ini files in” 列出的目录里,是否有其他 ini 文件把curl给禁用了(比如写了extension=空值,或disable_functions里包含curl_init) - 某些环境(如 Laragon)会为 CLI 单独生成
php-cli.ini,改了php.ini完全无效,得去改那个
最常被忽略的一点:php -m 看不到 curl,不代表扩展没装,只代表它没被当前 CLI PHP 加载。不要跳过 php --ini 和 php -r "echo ini_get('extension_dir')" 这两步验证——它们比“我明明改了 php.ini”这种判断可靠得多。











