composer 2.x 已彻底移除 pear type 支持:type 为 "pear" 的仓库配置被完全忽略,不解析、不报错、不警告;pear 渠道自 2017 年停维,pear.php.net 已下线,官方拒绝兼容层,唯一解是迁移到 packagist 或手动 vendor 管理。

Composer 2.x 已彻底移除 pear type 支持
直接说结论:type 值为 "pear" 的仓库配置在 Composer 2.0+ 中已被硬性移除,不再解析、不报错、不警告——它会被完全忽略。这不是兼容性问题,是功能删除。
常见错误现象:项目里还留着类似这样的配置:
"repositories": [
{
"type": "pear",
"url": "https://pear.php.net"
}
]
执行 composer install 或 composer update 时,Composer 会安静跳过该条目,既不拉包也不报错,导致依赖缺失却查不出原因。
-
pear类型自 Composer 1.10 起已标记为 deprecated,2.0 正式删除 - 官方 PEAR 渠道早在 2017 年就停止维护,
pear.php.net域名已下线,当前访问返回 404 或重定向到无关页面 - Composer 不再提供任何转换层或 fallback 逻辑——删了就是删了,没替代方案可“启用”
PEAR 包怎么装?没有替代 type,只有替代来源
PEAR 生态的包(如 Console_CommandLine、Net_SMTP)绝大多数早已迁移到 Packagist,或被现代 PHP 库重写。你不需要“换 type”,而是要确认这个包是否还存在、以什么形式存在。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先查 Packagist:
composer search console-commandline或访问 https://www.php.cn/link/5d2e892c81e5fafc51ab0973879563a0 搜索包名 - 如果找到同名包(如
pear/console_commandline),直接composer require pear/console_commandline即可——它走的是type: composer标准源,不是 PEAR 协议 - 如果找不到,说明该包已无人维护,应寻找替代方案(例如用
symfony/console替代命令行解析,用phpmailer/phpmailer替代邮件发送) - 极少数遗留项目仍需旧 PEAR 包,唯一可行路径是手动下载
.tar或.tgz归档,放入vendor/并用"type": "package"+"dist"字段声明,但需自行保证 autoload 和依赖兼容性
误写 type: pear 导致的典型故障排查
如果你的 composer.json 里还有 "type": "pear",且依赖安装行为异常(比如某个包始终不出现、composer show 查不到、lock 文件里没记录),请按顺序检查:
- 运行
composer config repositories,确认输出中是否包含该pear条目——它大概率不会显示,因为已被跳过 - 执行
composer update -vvv,观察日志中是否有Loading repository行提到你的 PEAR URL;如果没有,说明它根本没被加载 - 搜索 Packagist 是否有对应包:若存在,删掉整个
repositories块,改用标准require - 不要尝试改成
"type": "composer"并保留 PEAR URL——https://pear.php.net返回的是 HTML 页面,不是 valid composer repository JSON,会直接报Invalid repository type
为什么不能加个兼容层?Composer 官方明确拒绝
这不是技术做不到,而是设计决策。Composer 团队在 RFC #8925 和后续 issue 讨论中反复强调:PEAR 协议无标准 API、无可靠元数据格式、无法与 SAT 求解器集成。强行支持只会拖慢解析、增加攻击面、误导用户继续使用已废弃生态。
所以别等“未来版本支持”,也别找第三方插件试图复活 pear type——所有稳定发行版(2.0–2.5)都已移除,且无回溯计划。真正要做的,是把残留的 PEAR 依赖从项目里清出去,哪怕只有一行。










