必须用官方脚本+SHA384校验安装Composer,禁用apt install composer,因其版本滞留在2.2.x及以下,不支持PHP 8.3、^2.5依赖约束及Laravel 11+/Symfony 7+,且路径/usr/share/php/composer不可写、无PATH配置、缺php-zip/php-phar等扩展导致install失败。

别用 apt install composer,它装的是个“假全局”——版本卡在 2.2.x 或更低,PHP 8.3 下直接报错,composer self-update 会失败或静默降级,而且实际二进制路径是 /usr/share/php/composer/composer,该目录不可写,升级永远卡住。
为什么 apt install composer 一定不能用
Ubuntu 官方源里的 php-composer 包不是 Composer 官方维护的,更新严重滞后(截至 2026 年 6 月,LTS 系统仍普遍是 2.2.22),且存在三个硬伤:
-
composer --version看着正常,但一跑composer install就崩:缺ZipArchive或PharData类,本质是php-zip和php-phar没装全 - 不支持
^2.5这类现代依赖约束,Laravel 11+、Symfony 7+ 明确拒绝旧版解析器 - 安装后
/usr/bin/composer可能残留,和你手动装的/usr/local/bin/composer冲突,which composer找到的往往是旧版本
必须校验 SHA384 后再执行安装脚本
跳过校验看似省事,实则埋下严重信任隐患:中间人若劫持下载,后续所有依赖安装、autoload 生成都不可信。官网签名地址是 https://composer.github.io/installer.sig,不是镜像站给的哈希值。
直接复制运行(含校验):
EXPECTED_CHECKSUM="$(curl -sS https://composer.github.io/installer.sig)"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384','composer-setup.php');")"
if ["$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM"]; then
echo 'Integrity check failed' >&2; rm composer-setup.php; exit 1
fi
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer && rm composer-setup.php
校验失败就立刻删掉 composer-setup.php,绝不能跳过这步。
composer --version 成功 ≠ 能用,composer install 才是真检验
很多人看到 composer --version 输出 2.x 就以为万事大吉,结果 composer install 直接卡住或抛出 Class 'ZipArchive' not found —— 这是因为 Ubuntu 默认 PHP 安装只含最简模块,而解压依赖包、生成 autoloader 全靠 php-zip、php-phar、php-xml、php-mbstring 支撑。
- 先确认 PHP 主版本:
php -v,再装对应扩展,例如 PHP 8.3 环境需sudo apt install php8.3-zip php8.3-phar php8.3-xml php8.3-mbstring - 验证是否启用:
php -m | grep -E "zip|phar|xml|mbstring",缺哪个补哪个 - 别信
php --ini显示的配置路径,CLI 和 Web 使用的php.ini可能不同,务必用php -m实际查加载模块
bash: composer: command not found 或 Permission denied 怎么办
这不是 Composer 没装好,而是 shell 找不到它,或当前用户无权执行——90% 的“装不上”其实是路径或归属问题。
- 检查
/usr/local/bin是否在$PATH中:echo $PATH | grep -q '/usr/local/bin',没输出就说明不在路径里 - 补 PATH(bash 用户改
~/.bashrc,zsh 用户改~/.zshrc):echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc - 确认文件有执行权限:
ls -l /usr/local/bin/composer,若没有x权限,运行sudo chmod +x /usr/local/bin/composer - 如果之前误用
sudo composer create-project,整个vendor/目录属主变成 root,后续所有命令都会Permission denied,修复命令:sudo chown -R $USER:$USER my-project/
真正麻烦的从来不是“怎么装”,而是装完之后没人去跑 composer diagnose——它不解决具体问题,但会告诉你缺什么扩展、HTTPS 能不能走、vendor/ 权限对不对,这些才是后续所有报错的根子。


















