WSL中应跳过apt安装旧版Composer,改用官方脚本下载composer.phar并软链至/usr/local/bin;需确保PHP≥8.0且启用openssl、zlib、json、mbstring扩展;所有操作须在WSL原生路径(如~/projects)下进行。

WSL 里直接用 apt 装的 composer 是旧版,别信
WSL(尤其是 Ubuntu)仓库里的 composer 包通常卡在 1.x 或极老的 2.2.x,不支持 PHP 8.2+ 的新特性,也缺少 composer create-project 等常用命令的稳定行为。官方明确不推荐通过包管理器安装。
- 执行
apt install composer后,composer --version显示2.2.22或更低 → 基本可以判定是过期版本 - 运行
composer require laravel/framework报错Could not find package laravel/framework→ 很可能是镜像源或协议兼容问题,根源还是旧版 - 正确做法:跳过 apt,用官方安装脚本 + 手动软链
用 curl 下载 phar 文件并设为全局命令
Composer 本质是个单文件 PHP 归档(composer.phar),直接下载、加执行权限、放系统路径最稳。
- 在 WSL 终端中逐行执行:
-
curl -sS https://getcomposer.org/installer | php→ 生成当前目录下的composer.phar -
sudo mv composer.phar /usr/local/bin/composer→ 移到系统级 bin 目录 -
sudo chmod +x /usr/local/bin/composer→ 加上可执行权限 - 验证:
composer --version应显示类似Composer version 2.7.7(当前最新稳定版)
PHP 版本和扩展必须达标,否则 composer init 就报错
Composer 2.7+ 要求 PHP ≥ 8.0,且必须启用 openssl、zlib、json、mbstring 四个扩展,缺一不可。
- 检查 PHP:
php -v输出低于8.0.0→ 升级 PHP(sudo apt install php8.2+sudo update-alternatives --config php) - 检查扩展:
php -m | grep -E "openssl|zlib|json|mbstring"→ 缺哪个就装哪个,例如sudo apt install php8.2-mbstring - 常见报错
The openssl extension is required for SSL/TLS protection→ 不是没装 openssl,而是 PHP CLI 模式没加载它,确认/etc/php/8.2/cli/php.ini中有extension=openssl且未被注释
Windows 主机和 WSL 子系统间的路径别混用
WSL 访问 Windows 文件(如 /mnt/c/Users/name/project)时,Composer 会因路径解析异常导致缓存失败、autoload 生成错误,甚至 vendor 权限混乱。
- 永远在 WSL 原生路径下操作:
~/projects/myapp,而不是/mnt/c/Users/xxx/... - 如果项目必须从 Windows 同步过来,先
cp -r /mnt/c/... ~/projects/...,再进 WSL 路径执行composer install - 执行
composer global config home查看全局配置路径 → 必须落在/home/xxx/.composer,而非/mnt/c/...,否则插件和缓存全失效


















