确认 PHP 环境能否运行 Composer 需检查:①必备扩展(openssl/zlib/json/mbstring)是否启用;②CLI PHP 路径是否正确且完整;③安装脚本必须校验 SHA384 签名;④全局 composer 命令需确保调用的是带全扩展的 PHP 二进制;⑤国内须配置有效镜像源(如阿里云),并验证生效。

确认 PHP 环境是否真能跑 Composer
很多报错根本不是 Composer 的问题,而是 PHP 缺关键扩展或 CLI 路径不对。运行 php -v 只是告诉你版本号,不代表所有依赖就位。
-
php -m | grep -E "openssl|zlib|json|mbstring"必须每项都输出,缺一个就会卡在file_get_contents(): php_network_getaddresses: getaddrinfo failed或JSON decode error - 如果用 Remi 源装的 PHP(比如
php74-php-cli),实际命令可能是/usr/bin/php74,而php命令可能根本没装——这时直接跑curl | php会提示/usr/bin/env: php: No such file or directory - 常见补救:执行
ln -s /usr/bin/php74 /usr/local/bin/php,再验证which php是否指向有效二进制
下载安装要校验,别图快跳过 SHA384
直接 curl -sS https://getcomposer.org/installer | php 看似省事,但网络中断、中间人劫持或 CDN 缓存异常都会导致生成损坏的 composer.phar——后续所有 composer install 都可能静默失败或报奇怪的解析错误。
- 正确流程分四步:下载脚本 → 获取官方签名 → 校验哈希 → 安装:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"HASH="$(wget -q -O - https://composer.github.io/installer.sig)"php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'OK'; } else { echo 'FAIL'; unlink('composer-setup.php'); }"php composer-setup.php --install-dir=/usr/local/bin --filename=composer - CentOS 7 默认
wget可能不带 HTTPS 支持,若wget -O - https://...报证书错误,改用curl -sS获取签名更稳
权限和路径错了,composer 命令就永远找不到 PHP
把 composer.phar 移到 /usr/local/bin/composer 后,看似能全局调用,但实际执行时仍会去调用系统默认的 php。如果那个 php 是阉割版(比如只含 Apache 模块,没 CLI)、或版本太低(PHP 7.1 不支持 Laravel 10+),就会在 composer create-project 时爆 problem 1 - installation request 这类模糊错误。
- 检查真实执行链:
head -n1 /usr/local/bin/composer应该是#!/usr/bin/env php,意味着它依赖环境变量里的php路径 - 稳妥做法:不用
env php,改用绝对路径启动。例如重写成可执行脚本:#!/bin/bash<br>/usr/bin/php74 /usr/local/bin/composer.phar "$@"
,再chmod +x /usr/local/bin/composer - 另一个坑:
php-process扩展常被忽略。某些包(如symfony/console)需它支持proc_open(),否则composer update卡住无响应。CentOS 上对应包名是php74-php-process(按你 PHP 版本替换)
国内镜像必须配,但别用已停服的地址
2025 年起,https://packagist.phpcomposer.com 已彻底下线,继续配置会导致 composer install 直接超时或返回 404。阿里云和腾讯云镜像目前稳定可用,但配置方式有细节差异。
立即学习“PHP免费学习笔记(深入)”;
- 推荐命令(阿里云,HTTPS 安全):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 如果公司内网走代理,还需额外设:
composer config -g http-proxy http://your-proxy:8080(注意是http-proxy,不是proxy) - 验证是否生效:运行
composer config -g repo.packagist,输出应为完整 URL;再试composer show laravel/framework,响应时间应明显快于首次
Composer 的核心其实是「PHP 进程 + 网络 IO + JSON 解析」三者严丝合缝。任何一个环节掉链子,错误信息都不会直说“你少装了 openssl”,而是拐着弯报个语法错或连接超时。所以别急着重装,先用 php -m 和 php --ini 把底层摸清。











