php扩展缺失或composer安装不安全会导致静默失败;必须启用zip、openssl、json、mbstring、phar、xml扩展,并通过sha-384校验后安装官方composer.phar。

PHP 扩展没开全,composer install 会静默失败
不是报错,而是卡在 Loading composer repositories with package information 后不动,或者提示 Class 'ZipArchive' not found——这说明 php-zip 没装;若出现 file_get_contents(): php_network_getaddresses: getaddrinfo failed,大概率是 openssl 或 curl 扩展缺失;JSON 解析失败 则指向 json 扩展未启用。
-
php -m | grep -E "zip|openssl|json|mbstring|phar|xml"必须全部有输出,缺一不可 - CentOS 8/9:用
dnf module enable php:remi-8.2切到新版 PHP 模块后,再装php-cli php-zip php-json php-mbstring php-phar php-xml - Ubuntu/Debian:
sudo apt install php-cli php-zip php-json php-mbstring php-xml php-phar - 装完重启 CLI 生效(不用重启 Web 服务,但得新开终端或运行
hash -r)
别信 apt install composer,它根本跑不动现代项目
系统仓库里的 composer 多是 1.x 版本(比如 Ubuntu 22.04 默认给 2.2.6,但 CentOS Stream 9 仍塞 1.10),不支持 ^2.5 依赖约束、platform-check、PHP 8.2+ 的联合类型校验,甚至无法解析 Laravel 10+ 的 composer.json。你运行 composer --version 看到 1.10.22 就该立刻卸载。
- 先清理旧版:
sudo apt remove composer(Ubuntu)或sudo dnf remove composer(RHEL/CentOS) - 检查残留:
which composer若返回/usr/bin/composer,手动删掉 - 官方安装脚本生成的是
composer.phar,它是自包含的 PHAR 文件,不依赖系统路径,也不走包管理器缓存
curl | php 一步到位?别跳过 SHA-384 校验
直接 curl -sS https://getcomposer.org/installer | php 虽快,但中间人攻击风险真实存在——尤其公司网络、代理环境或老旧镜像站。一旦下载的安装脚本被篡改,后续所有 composer install 都可能偷偷上传你的 auth.json 或执行恶意代码。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 务必分步做校验:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - 获取签名:
HASH=$(curl -sS https://composer.github.io/installer.sig) - 比对:
php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }" - 验证通过后再执行:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer --version 报 Permission denied?PATH 和权限都得看
常见假象是“明明移动了文件却找不到命令”,其实有两个独立问题:一是 /usr/local/bin/composer 没执行权限,二是当前 shell 的 $PATH 根本没包含 /usr/local/bin(尤其最小化安装的 CentOS 或 Docker 容器里很常见)。
- 补权限:
sudo chmod +x /usr/local/bin/composer - 查 PATH:
echo $PATH | grep -o '/usr/local/bin',无输出就说明不在路径中 - 临时加路径:
export PATH="/usr/local/bin:$PATH";永久生效需写入~/.bashrc或/etc/profile.d/composer.sh - 别用
chmod -R 777,composer是可执行文件,不是目录,-R毫无意义还埋安全隐患
最常漏掉的是扩展校验和签名比对——这两步看着啰嗦,但跳过之后遇到的诡异问题(比如突然拉不到包、vendor/autoload.php 不生成、composer update 反复重试),八成根子在这儿。










