composer show vendor/package-name 只显示 license 字段简写(如 MIT),不输出协议正文;需手动查看 vendor/ 下 LICENSE、COPYING 等文件,或通过 composer show -s 获取源码地址后访问原始仓库 LICENSE 文件,SPDX 标识符须以官网原文为准。

composer show 命令能直接显示许可证类型,但不输出协议正文
默认情况下,composer show vendor/package 只会返回类似 license: MIT 或 license: Apache-2.0 这样的简写标识,不是协议全文。想看正文,得手动定位并读取文件。
许可证文件通常在包根目录的 LICENSE / LICENCE / COPYING 文件中
Composer 安装包后,源码会存放在 vendor/vendor-name/package-name/ 目录下。绝大多数 PHP 包把协议文本放在根目录,常见文件名有:
-
LICENSE(最常见,尤其 MIT、BSD 类) -
LICENCE(英式拼写,部分欧洲作者偏好) -
COPYING(GPL 系列常用) -
LICENSE.md或LICENSE.txt(带扩展名的变体)
可直接用 cat 或 less 查看,例如:
cat vendor/phpunit/phpunit/LICENSE
用 composer show -s 查看包源码仓库地址,再跳转到原始 LICENSE
有些包的 LICENSE 文件可能被忽略或未提交到 dist 包里,但 GitHub/GitLab 仓库中一定存在。运行:
composer show -s vendor/package获取
source 地址,然后浏览器打开该 URL,末尾加上 /LICENSE(如 https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE)。注意大小写——GitHub 对 LICENSE 敏感,license 可能 404。没有 LICENSE 文件?检查 composer.json 的 license 字段是否为 SPDX 表达式
如果 vendor/*/package/composer.json 中 "license" 是 "MIT"、"BSD-3-Clause" 或 ["Apache-2.0", "GPL-2.0-or-later"] 这类 SPDX ID,说明协议是标准化的,正文需查对应官网:
-
MIT→ https://opensource.org/licenses/MIT -
Apache-2.0→ https://www.apache.org/licenses/LICENSE-2.0 -
GPL-3.0-only→ https://www.gnu.org/licenses/gpl-3.0.html
SPDX ID 不等于文件内容,别误以为 composer.json 里写了就等于包里自带了协议正文。
真正要确认合规性时,不能只信 composer show 输出的 license 字段;必须核对实际存在的 LICENSE 文件或上游仓库原文——尤其当包声明的是自定义协议或多个协议组合时,文件内容才是法律依据。


















