应手动安装 composer 2.x 官方最新版,避免 yum 安装的过时 1.x 版本;需确保 php-cli、curl 及 zip/openssl 扩展已启用,非 root 用户应以项目属主身份运行 composer install。

直接用 yum 安装的 composer 版本太旧,不推荐
CentOS 默认源里的 composer 通常是 1.x 旧版,连 PHP 8.1+ 都不兼容,跑 composer install 时大概率报 ParseError 或 Class not found。官方早就不维护 1.x,现在主流是 2.x,必须手动装。
用官方安装脚本装最新稳定版 composer
这是最稳妥的方式,绕过系统包管理器,版本可控,权限干净:
- 先确保已装
php-cli和curl:yum install -y php-cli curl - 执行官方一键安装:
curl -sS https://getcomposer.org/installer | php - 移动到系统路径并设可执行:
mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer - 验证:
composer --version应输出类似Composer version 2.7.7
注意:别用 sudo php composer-setup.php 这种分步方式,容易因当前目录或 umask 导致权限异常,mv 前确认 composer.phar 在当前目录且可读。
composer 执行报 PHP extension zip not loaded 怎么办
这是 CentOS 上最常卡住的点——composer 依赖 zip 和 openssl 扩展,但最小化安装的 CentOS 默认不带。光装 php-zip 不够,还得确认模块真被加载:
- 查扩展是否启用:
php -m | grep -E 'zip|openssl',缺哪个就装哪个 - 装扩展:
yum install -y php-zip php-openssl - 关键一步:重启 PHP-FPM 或 Apache(如果用 web 方式运行),否则 CLI 下虽能用,但 web 端仍报错;CLI 用户只需确认
php.ini里有extension=zip.so - 若用的是 Remi 源的 PHP(如
php81-php-zip),包名不同,得按实际 PHP 版本匹配,比如dnf module install php:remi-8.2后再装对应扩展
非 root 用户怎么安全使用 composer
生产环境不建议用 root 跑 composer install,尤其当项目含 post-install-cmd 脚本时,可能意外写入系统路径。正确做法是:
- 把
/usr/local/bin/composer权限设为755,所有用户都能执行 - 项目目录归属普通用户,比如
chown -R appuser:appuser /var/www/myapp - 切到该用户再操作:
sudo -u appuser composer install --no-dev --optimize-autoloader - 避免用
sudo composer install,它会以 root 身份写vendor/,后续 web 服务器(如 nginx)可能因权限拒绝读取
真正麻烦的不是装不上,而是装完后 vendor 目录属主混乱、扩展没启、或者用了旧版 composer 解析不了新语法——这几个点漏一个,项目就卡在部署第一步。










