必须用官方脚本安装Composer 2.9.6并校验SHA384,禁用apt install composer,因其版本滞留2.2.22、不支持^2.5依赖约束、调用错误PHP路径、不可写且缺php-zip/php-phar等扩展,导致install报错或静默失败。

不能用 apt install composer,否则 composer install 必然失败——不是配置问题,是旧版解析器根本无法处理现代 composer.json 里的依赖约束和 autoload 规则。
为什么 composer install 会直接报错或卡住
常见现象包括:Your requirements could not be resolved、Class 'ZipArchive' not found、autoload.php not generated。这些不是项目问题,而是环境缺失导致的硬性崩溃点:
-
apt install composer装的是 2.2.22 或更老版本(截至 2026 年 8 月仍普遍),它不支持^2.5这类语义化版本约束,遇到 Laravel 11/Symfony 7 的composer.json直接退出 - 旧版默认调用系统 PHP(如
/usr/bin/php),而你实际用的是php8.3,路径错位导致依赖解析失败 -
/usr/share/php/composer/composer不可写,self-update静默失败,后续所有依赖下载、autoloader 生成都不可信 - PHP 扩展缺失:仅
php-cli不够,composer install解压包需要zip,生成 autoloader 需要phar和mbstring
必须用官方脚本安装并校验 SHA384
跳过校验等于把整个依赖链的信任交给网络中间节点——后续所有 vendor/ 下的代码、autoload.php 的结构都可能被篡改。执行以下命令(可直接复制):
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 --version 应输出类似 Composer version 2.9.6。若提示 command not found,检查 echo $PATH 是否含 /usr/local/bin;没有就追加到 ~/.bashrc 并运行 source ~/.bashrc。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
装齐 PHP 扩展再跑 composer install
composer --version 成功 ≠ 环境就绪。composer install 是真检验:
- 先确认 PHP 版本:
php -v(比如输出PHP 8.3.12),然后装对应扩展:sudo apt install php8.3-zip php8.3-phar php8.3-mbstring php8.3-xml php8.3-json unzip git - 验证启用:
php -m | grep -E "zip|phar|mbstring",缺哪个补哪个 - 注意 CLI 和 Web 使用的 PHP 配置可能不同:
php --ini查看加载的php.ini路径,确保扩展在该文件中已启用(如extension=zip.so) - 测试最小闭环:
mkdir /tmp/test-composer && cd /tmp/test-composer && composer init -n && composer require monolog/monolog:^3.0 && ls vendor/monolog/monolog—— 这步能过,composer install就基本稳了
composer install 失败时优先查这三处
别急着重装,先快速定位:
- 运行
which php和composer --version对比 PHP 路径是否一致;不一致就用sudo update-alternatives --config php统一 CLI 默认版本 - 检查
composer config -g repo.packagist输出是否为阿里云镜像(如https://mirrors.aliyun.com/composer/);不是就配:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 删掉
vendor/和composer.lock,再跑composer install -vvv—— 最后几行错误往往直指真实原因(比如 SSL handshake failed 就是没装ca-certificates)
最易被忽略的是:Ubuntu 默认不启用 php-zip,而 Composer 2.9.x 在解压 .tar.gz 包时强制要求它——哪怕 composer --version 显示正常,install 也会在 unpack 阶段静默中断,只留一个空 vendor/ 目录。

















