Composer在CentOS上无需传统安装,只需下载composer.phar并设为全局命令;需确保PHP≥7.2、启用openssl/zlib/json/mbstring扩展、curl可用;下载后校验SHA-384,移至/usr/local/bin/composer并赋权;切勿用sudo执行require,注意CLI与Web的php.ini差异及proc_open/exec是否被禁用。

Composer 在 CentOS 上不需要“安装”,而是下载一个可执行的 composer.phar 文件并设为全局可用——直接运行 php composer.phar 就能用,但多数人希望像命令一样输入 composer 调用。
确认 PHP 环境和依赖是否就绪
Composer 本质是 PHP 脚本,必须确保:
• PHP 版本 ≥ 7.2(推荐 8.0+,尤其 Laravel 10+ 需要 PHP 8.1)
• 已启用 openssl、zlib、json、mbstring 扩展(缺一不可,否则报 file_get_contents(): php_network_getaddresses: getaddrinfo failed 或 JSON 解析失败)
• curl 命令可用(用于下载)
检查方法:php -vphp -m | grep -E "openssl|zlib|json|mbstring"which curl
若缺失扩展,例如 CentOS 7 + PHP 7.4,通常用:yum install php-opcache php-mbstring php-xml php-zip php-curl php-gd
下载并验证 composer.phar
官方推荐使用 curl 下载,并用 SHA-384 校验完整性(跳过校验可能引入损坏或恶意文件):
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd03d4901860b35878fc132609de12d9ab23573e50672b34f4c8ab91025c') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
执行后得到 composer.phar ——这是一个独立 PHAR 包,无需解压,可直接运行:php composer.phar --version
设为系统级命令:移动 + 添加可执行权限 + 加入 PATH
常见错误是只改权限不加 PATH,或放在非标准路径导致其他用户/Shell 找不到:
- 移动到系统 bin 目录:
sudo mv composer.phar /usr/local/bin/composer - 赋予可执行权限:
sudo chmod +x /usr/local/bin/composer - 确认 PATH 包含
/usr/local/bin(CentOS 默认已包含,可用echo $PATH验证) - 重开终端或运行
source ~/.bashrc(如果修改过 shell 配置)
验证:composer --version。如果提示 command not found,大概率是 PATH 没生效或权限未加。
后续使用与权限注意事项
Composer 运行时会写缓存(~/.composer/cache)和配置(~/.composer/auth.json),首次运行可能卡住——不是失败,是正在初始化全局配置目录。
关键提醒:
• 不要用 sudo composer require xxx,这会导致生成的 vendor/ 和 composer.lock 所属用户为 root,后续开发操作易报权限拒绝
• 如果项目目录属普通用户,所有 composer 命令都应以该用户身份运行
• 若需代理(如企业内网),设置:composer config -g http-proxy http://proxy:port
真正容易被忽略的是:PHP CLI 的配置(php.ini)和 Web Server 使用的 PHP 配置往往不同。务必用 php -i | grep "Loaded Configuration File" 确认 CLI 加载的是哪个 php.ini,再检查其中 disable_functions 是否禁用了 proc_open 或 exec ——这两个函数被禁会导致 Composer 安装包时卡在“Installing dependencies”不动。










