composer怎么在CentOS安装_composer服务器配置【指南】

3次阅读

composer 安装失败主因是 php CLI 环境不全,必须满足 PHP ≥7.2(laravel 10+ 需 8.1+)且启用 openssl、mbstring、json、zlib 四扩展;校验安装脚本 SHA-384 确保安全;权限与 PATH 配置影响命令可用性;国内建议配置阿里云镜像加速。

composer怎么在CentOS安装_composer服务器配置【指南】

PHP 环境不全,composer 直接报错退出

Composer 不是独立程序,它依赖 PHP CLI 和至少 4 个扩展:`openssl`、`mbstring`、`json`、`zlib`。缺一个,安装或运行时就会崩——比如 file_get_contents(): php_network_getaddresses: getaddrinfo failed 是 openssl 没开,json decode Error 多半是 json 扩展没装。

  • 先检查:php -v(必须 ≥ 7.2,Laravel 10+ 强制要 PHP 8.1+)
  • 再确认扩展:php -m | grep -E "openssl|mbstring|json|zlib",漏了就补:
  • centos 7(用 Remi 仓库):yum install php-opcache php-mbstring php-xml php-zip php-curl php-gd
  • CentOS 8/9:dnf install php-cli php-mbstring php-xml php-zip php-curl

下载安装脚本但校验失败,Installer corrupt

官方要求校验 SHA-384,跳过可能载入损坏或被劫持的安装器。别图省事直接 curl | php——生产环境尤其不能。

  • 进临时目录:cd /tmp
  • 下载脚本:curl -sS https://getcomposer.org/installer -o composer-setup.php
  • 取最新签名(动态获取,比硬编码更可靠):EXPECTED_CHECKSUM="$(curl -sS https://composer.github.io/installer.sig)"
  • 校验:php -r "if (hash_file('sha384', 'composer-setup.php') === '$EXPECTED_CHECKSUM') { echo 'OK'; } else { echo 'FAIL'; unlink('composer-setup.php'); }"
  • 只在输出 OK 后才执行:php composer-setup.php --install-dir=/usr/local/bin --filename=composer

composer 命令找不到,明明 mv 过了

常见错因不是没移动,而是权限或 PATH 问题。比如 mv composer.phar /usr/local/bin/composer 后没加执行权限,或者用户 shell 的 $PATH 没包含 /usr/local/bin(虽然 CentOS 默认有,但某些最小化安装或非交互式 shell 会丢)。

  • 赋权必须做:sudo chmod +x /usr/local/bin/composer
  • 验证路径:echo $PATH | grep '/usr/local/bin',没有就临时加:export PATH="/usr/local/bin:$PATH"(写进 ~/.bashrc/etc/profile.d/composer.sh 持久生效)
  • 新开终端后测试:which composer 应返回 /usr/local/bin/composer

装完跑 composer require 特别慢甚至超时

默认走 packagist.org,国内直连大概率卡死。这不是 Composer 本身问题,是网络路由和 DNS 导致的连接不稳定或延迟高。

  • 换国内镜像(推荐阿里云):composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 验证是否生效:composer config -g repo.packagist 应输出阿里云地址
  • 注意:镜像同步有数分钟延迟,新包可能稍晚出现;若需最新 dev 分支,可临时切回官方源:composer config -g --unset repos.packagist

最容易被忽略的是 PHP CLI 扩展完整性——它不报错到具体扩展名,只抛一 JSON 或网络异常,让人反复查网络、代理、DNS,结果发现只是少装了个 php-mbstring。装之前务必 php -m 过一遍。

text=ZqhQzanResources