php -m 看不到 curl 说明 cli 环境未启用该扩展,需先运行 php --ini 定位 loaded configuration file,编辑对应 php.ini 取消 ;extension=curl 注释并确认 extension_dir 正确,保存后重启终端再执行 php -m | grep curl 验证。

php -m 里看不到 curl 模块,说明扩展根本没加载
不是 Composer 缺 curl,是 PHP CLI 环境压根没启用它。Windows(XAMPP/WAMP)、macOS(Homebrew PHP)、Linux(apt 安装)默认都不开这个扩展,得手动配。
- 先确认当前 CLI 用的是哪个
php.ini:运行php --ini,看 “Loaded Configuration File” 路径 - 打开那个文件,找到
;extension=curl这行,删掉开头的分号(;) - 检查
extension_dir是否指向正确的ext/目录(例如C:\xampp\php\ext或/usr/lib/php/20220829) - 改完保存,重启终端或命令行窗口,再跑
php -m | grep curl—— 必须有输出才生效
php -m 能看到 curl,但 composer install 还报连接失败
这说明模块加载了,但网络链路不通。curl 扩展只是“能发请求”,不代表一定能连上 Packagist;90% 的这类报错其实是 DNS、代理、镜像配置或证书问题,和 curl 是否存在无关。
- 执行
ping packagist.org:如果返回unknown host,就是 DNS 解析失败,立刻换 DNS(如8.8.8.8) - 运行
composer config -g repo.packagist:输出必须是https://mirrors.aliyun.com/composer/(注意是 https) - 换源后必须清缓存:
composer clear-cache,否则旧失败记录还在,重试照样走原地址 - 如果报
cURL error 60,不是没 curl,是证书路径没设对——查php --ini对应的php.ini,加一行curl.cainfo = "/path/to/cacert.pem"
Linux 上 apt 安装 PHP 后仍缺 curl 扩展
Debian/Ubuntu 的 php 包只是元包,实际扩展要单独装。只装 php 不等于装全了依赖模块。
- 运行
sudo apt update && sudo apt install php-cli php-curl php-mbstring php-xml php-zip - 验证是否齐备:
php -m | grep -E "^(curl|mbstring|xml|zip)$"应全部列出 - Composer 2.5+ 要求 PHP ≥ 7.4,且
phar.readonly = Off—— 检查php -i | grep "phar.readonly",若为On,需在 CLI 的php.ini(不是 Apache 或 FPM 的)里改成Off
Mac 上 Homebrew PHP 的 curl.cainfo 默认为空
Homebrew 安装的 PHP 不自带 CA 证书路径,curl.cainfo 留空会导致所有 HTTPS 请求失败(包括 Composer),哪怕 php -m 显示 curl 已加载。
- 先确认系统证书位置:
brew install ca-certificates后,通常在/opt/homebrew/etc/ca-certificates/cert.pem(M1/M2)或/usr/local/etc/ca-certificates/cert.pem(Intel) - 编辑 CLI 对应的
php.ini(php --ini查到的路径),加一行:curl.cainfo = "/opt/homebrew/etc/ca-certificates/cert.pem" - 更稳妥的做法是命令行临时指定:
php -d curl.cainfo=/opt/homebrew/etc/ca-certificates/cert.pem composer install - 别信
phpinfo()页面——Web 和 CLI 加载的php.ini可能不同,Composer 只认 CLI 配置
php.ini,却忘了 php --ini 显示的是另一份,结果反复折腾 curl 模块却始终不生效。











