Phive 是独立的 PHAR 管理器,非 PHP 库,不通过 Composer 安装;必须用 shell 下载验证后的 PHAR 并设为可执行,否则 phive 命令无法使用。

Phive 是什么,为什么不用 Composer 装它
Phive 不是 PHP 库,而是一个独立的 PHAR 管理器,用来安全下载、验证和管理 PHAR 工具(如 phpstan、psalm、infection)。它不走 Composer 的 autoload 机制,也不写进 composer.json —— 所以你用 composer require --dev phar-io/phive 是装不起来的,那只是它的源码依赖,不是可执行二进制。
官方明确要求:必须用 shell 下载 PHAR 并设为可执行,否则后续所有 phive install 都会失败。
- 别在项目里
composer install后幻想自动有phive命令 - 别用
php phive.phar每次都敲全路径,得chmod +x phive.phar && sudo mv phive.phar /usr/local/bin/phive - macOS 用户如果用 Homebrew,可以直接
brew install phive,但注意它默认装的是phive(无后缀),不是phive.phar
Linux/macOS 下手动生成并安装 phive
最稳的方式是用官方推荐的一行脚本,它会校验 GPG 签名,避免中间人劫持:
curl -fLsS https://github.com/phar-io/phive/releases/latest/download/phive.phar -o phive.phar && \ curl -fLsS https://github.com/phar-io/phive/releases/latest/download/phive.phar.asc -o phive.phar.asc && \ gpg --dearmor ~/.gnupg/pubring.kbx && \ gpg --no-default-keyring --keyring gnupg-ring:~/.gnupg/pubring.gpg --verify phive.phar.asc phive.phar && \ chmod +x phive.phar && \ sudo mv phive.phar /usr/local/bin/phive
常见卡点:
-
gpg: Can't check signature: No public key→ 先运行gpg --receive-keys 0x9E3E53F19C7DE460导入 Phive 官方密钥 -
curl: (23) Failed writing body→ 磁盘满或权限不足,检查/tmp或当前目录写入权限 - 装完运行
phive --version报Permission denied→ 检查/usr/local/bin/phive是否真有执行位:ls -l /usr/local/bin/phive
用 phive 安装 phpstan 或 psalm 到项目本地
Phive 默认把工具装到 ./tools/,不污染全局 PATH,也避免版本冲突。例如装 phpstan:
phive install phpstan/phpstan
它会:
- 从 GitHub Releases 查最新稳定版(非 Packagist)
- 下载对应 PHAR + ASC 签名文件,本地验证
- 软链接到
./tools/phpstan(可直接执行)
注意几个关键行为:
- 不加
--global就是项目级安装,./tools/会被 git 忽略(建议加进.gitignore) - 想指定版本?用
phive install phpstan/phpstan@1.10.14,版本号必须是 GitHub Release tag,不是 Composer 的 stability flag - 如果报
Could not find a release matching ...,说明该 tag 不存在于官方 Release 页面,别硬试dev-master—— Phive 不支持分支安装
CI 环境下怎么跳过 GPG 验证又不降低安全性
某些 CI(比如 GitLab CI 的 alpine 镜像)没预装 GPG 或网络策略限制 keyserver 访问,强行验证会失败。但直接关验证(--force-accept-unsigned)等于放弃核心安全机制。
更合理做法是预缓存签名密钥 + 离线验证:
- 在 CI 前置步骤中,用可信环境导出密钥:
gpg --export 0x9E3E53F19C7DE460 > phive-key.gpg - CI 中先导入:
gpg --import phive-key.gpg - 再跑
phive install,无需联网拉 key
别图省事用 --trust-gpg-keys 直接跳过校验 —— 这会让 MITM 攻击者伪造任意 PHAR 并通过安装流程。
Phive 的设计哲学就是「宁可失败,也不妥协签名验证」,这点和 Composer 的 secure-http 类似,但执行更严格。一旦绕过,就等于把代码审计工具本身交给了不可信来源。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











