0

0

composer怎么查看包的授权_检查composer包的开源协议【常识】

尼克

尼克

发布时间:2026-03-17 11:59:29

|

682人浏览过

|

来源于php中文网

原创

composer show vendor/package-name 是查单个包许可证最可靠方式,直接读取 vendor/ 下真实 composer.json 的 license 字段,需先执行 composer install;批量查看用 composer show --format=json | jq -r '.packages[] | "(.name) (.license // "UNKNOWN")"';无 vendor/ 时可用 jq 解析 composer.lock,但有漏检风险;license 兼容性须以 spdx.org/licenses 为准。

composer怎么查看包的授权_检查composer包的开源协议【常识】

composer show vendor/package-name 是最可靠的第一步

直接查单个包的许可证,composer show 是唯一原生、不依赖插件、不依赖外部服务的方式。它读取的是该包 vendor/ 目录下真实 composer.json 里的 license 字段,不是推测,也不是缓存。

  • 必须已执行过 composer install,否则 vendor/ 为空,composer show 会报错 Package not found
  • 输出中 license: 后的值可能是字符串(如 MIT)、数组(如 ["BSD-3-Clause", "GPL-2.0-only"])或空(显示为 license: 或压根不显示该行)
  • 遇到 see LICENSE in LICENSE.mdproprietary 这类非 SPDX 标识符的值,不能跳过——必须手动打开对应文件核对全文,SPDX 官方不认模糊描述

批量看所有包的 license:用 --format=json + jq 最稳

composer licenses 不是 Composer 内置命令,绝大多数环境执行会报错 Command "licenses" is not defined.。别信网上过时教程里写的“直接运行”,那是装了插件(比如 zicht/composer-license-plugin)后的效果,不是默认行为。

  • 真正跨环境可用的方案是:composer show --format=json | jq -r '.packages[] | "\(.name) \(.license // "UNKNOWN")"'
  • 这个命令不依赖插件,只依赖 jq(Linux/macOS 通常自带,Windows 可装 jq-win64
  • .license // "UNKNOWN" 是关键:处理 null 或缺失字段,避免 jq 报错退出
  • 注意:它只读 vendor/ 下已安装包的 composer.json,不会递归进嵌套依赖的 dev 包,但覆盖了生产环境实际加载的全部依赖

想绕过 vendor/?解析 composer.lock 更轻量,但有盲区

如果你在 CI 中还没跑 composer install(比如只做了 composer update),vendor/ 还不存在,这时只能靠 composer.lock ——它是合法 JSON,且记录了所有解析出的依赖快照。

皮卡智能
皮卡智能

AI驱动高效视觉设计平台

下载
  • 用这条命令:jq -r '.packages[] | select(.license != null) | "\(.name)\t\(.version)\t\(.license | join(" | "))"' composer.lock
  • 好处是不依赖 vendor/,执行快,适合早期合规扫描
  • 坑在于:有些包只在 packages-dev 数组里声明 license,或嵌套依赖根本没写 license 字段(即使其 composer.json 有),composer.lock 就不会收录,导致漏检
  • 另外,composer.lock 中的 license 是安装时抓取的快照,如果包作者后来改了 composer.json 里的声明,这里不会自动更新

license 兼容性不能靠猜,SPDX 是唯一事实源

看到 GPL-2.0-onlyGPL-3.0-or-later 并列,别以为“都是 GPL 就能混用”。语义差得远:-only 表示严格锁定版本,-or-later 表示可升级——两者不可互换,混用可能直接违反许可条款。

  • 判断是否兼容,唯一权威来源是 spdx.org/licenses,不是博客、不是 Stack Overflow,也不是你同事说的“应该没问题”
  • 常见陷阱:Apache-2.0GPL-2.0-only 不兼容;MIT 和几乎所有主流许可都兼容;AGPL-3.0 对网络服务有传染性,商用 SaaS 必须警惕
  • CI 中真要自动化拦截,建议导出 JSON 后用 Python 或 shell 脚本过滤关键词,例如:jq -r '.packages[] | select(.license | contains("AGPL") or contains("SSPL")) | "\(.name) \(.license)"' licenses.json

许可证不是元数据装饰,是法律约束。最常被忽略的点是:90% 的问题不出在 MIT/Apache 这些宽松许可上,而出现在那些写成 see license in COPYINGproprietary、或者干脆留空的包里——它们需要你点开源码、逐字读完 LICENSE 文件才能确认真实意图。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

163

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

458

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

84

2025.09.10

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

255

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1153

2024.03.01

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

889

2023.07.31

c++ 字符处理
c++ 字符处理

本专题整合了c++字符处理教程、字符串处理函数相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.5万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.6万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 7.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号