composer 命令不识别的根本原因是 php 未加入系统 path,需先配置 php 路径并验证 php -v;再用官方 php 脚本安装;最后检查 php.ini 中 openssl 扩展、extension_dir 及 memory_limit 等配置。

Composer 安装后 composer 命令不识别?先确认 PHP 是否可用
根本原因往往不是 Composer 没装好,而是系统根本没找到 php.exe。XAMPP 自带的 PHP 在 C:\xampp\php\(Windows)或 /Applications/XAMPP/xamppfiles/bin/php(macOS),但默认不加入系统 PATH。
验证方法:打开终端,运行 php -v。如果提示“不是内部或外部命令”,说明 PHP 路径没配,此时装 Composer 也没用。
- Windows 用户需把
C:\xampp\php\加入系统环境变量PATH(注意结尾不加反斜杠) - macOS 用户建议在
~/.zshrc或~/.bash_profile中追加:export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH",然后执行source ~/.zshrc - 配置完务必重启终端,再运行
php -v确认输出版本号
用官方安装脚本装 Composer,别下 .exe 或手动解压
Windows 上流传的 Composer-Setup.exe 本质是封装器,容易卡在 TLS 验证或权限问题;macOS/Linux 手动下载 composer.phar 后还要改权限、加 alias,反而多出故障点。
推荐统一用官方 PHP 脚本安装方式,它会自动检测当前 PHP 配置并校验签名:
- Windows(PowerShell):
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');",然后php composer-setup.php --install-dir=C:\xampp\php --filename=composer - macOS/Linux:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');",再sudo php composer-setup.php --install-dir=/Applications/XAMPP/xamppfiles/bin --filename=composer - 安装后直接运行
composer --version,应返回类似Composer version 2.7.7
XAMPP 的 PHP 配置影响 Composer 行为,重点检查 extension_dir 和 openssl
Composer 依赖 HTTPS 下载包、验证签名,若 XAMPP 的 php.ini 中 extension=openssl 被注释,或 extension_dir 指向错误路径,就会报 cURL error 60: SSL certificate problem 或 file_get_contents(): SSL operation failed。
- 编辑
C:\xampp\php\php.ini(Windows)或/Applications/XAMPP/xamppfiles/etc/php.ini(macOS),取消;extension=openssl前的分号 - 确认
extension_dir指向正确目录,例如 Windows 应为extension_dir = "C:\xampp\php\ext",macOS 类似extension_dir = "/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20220829"(路径以实际为准) - 改完重启 Apache(通过 XAMPP 控制面板),再运行
php -m | findstr openssl(Windows)或php -m | grep openssl(macOS)确认已加载
项目里运行 composer install 卡住或报错?检查 XAMPP 的 memory_limit 和代理设置
Composer 默认用 CLI 模式运行,读取的是 php.ini 的 CLI 配置(不是 Apache 的那个),而 XAMPP 的 CLI php.ini 通常和 Apache 共用同一份,但某些版本会生成独立的 php-cli.ini。
- 运行
php --ini查看 CLI 加载的配置文件路径,确认修改的是对的那个php.ini - 把
memory_limit改成-1(不限制)或至少512M,否则composer update大项目时容易 OOM - 国内用户若遇到
Could not fetch https://packagist.org/packages.json,不是换源就是关代理:临时禁用系统代理,或执行composer config -g repo.packagist composer https://packagist.phpcomposer.com(注意该镜像已停用,推荐用https://mirrors.aliyun.com/composer/)
真正麻烦的从来不是步骤本身,而是 PHP CLI 配置和 Apache 配置混在一起、改了这里忘了那里。每次怀疑 Composer 不工作,先跑一遍 php --ini 和 php -m,比重装快十倍。










