toran proxy 已于2021年停止维护,无法合法稳定部署:其依赖的toran.io域名过期、packagist v1 api关闭、php 7.4+及composer 2.x兼容性差;推荐替代方案为packagist-mirror或satis。

Toran Proxy 已于 2021 年正式停止维护,官方仓库归档,toran-proxy 包从 Packagist 移除,所有 Docker 镜像、安装脚本、文档链接均失效。你现在无法通过合法、稳定、安全的方式部署一个可用的 Toran Proxy 实例。
为什么 toran-proxy 不再可用
它依赖大量已下线的基础设施:
- 认证服务
toran.io域名已过期,注册/登录/许可证验证全部失败 - 其私有包同步逻辑硬编码调用
packagist.org的旧 API(v1),而该 API 已关闭 - PHP 7.4+ 环境下存在多处不兼容(如
ReflectionParameter::getClass()返回null导致 fatal error) - Composer 2.x 的插件机制变更后,
toran/composer-plugin无法加载
替代方案:用 packagist-mirror + Nginx 快速搭私有镜像
这是目前最轻量、可落地的选择,适用于内网或 CI 环境,不依赖中心化授权:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 克隆官方镜像工具:
git clone https://github.com/composer/packagist-mirror - 配置
mirror.json指定源和本地路径:{ "source": "https://packagist.org", "target": "/var/www/packagist-mirror" } - 首次同步:
php mirror.php sync(耗时约 2–4 小时,取决于带宽) - Nginx 配置需暴露
/packages.json和/p/路径,禁止直接访问.json以外的文件
生产环境更推荐:Satis + Composer 2 兼容工作流
satis 虽略重但稳定、可控、无外部依赖,且已适配 Composer 2:
- 安装:
composer create-project composer/satis:dev-main(避免用 v2.0.0 之前的 tag,有 JSON schema bug) - 配置
satis.json中的repositories列表必须显式声明每个源类型(vcs、package、composer),不能只写packagist.org - 生成镜像:
php bin/satis build satis.json web/,输出静态文件,可直接用 Nginx 托管 - 关键细节:若要支持
require-dev包,必须在satis.json中设置"require-dependencies": true和"require-dev-dependencies": true,否则vendor安装会报Package not found
真正卡住人的往往不是搭建步骤,而是镜像的「元数据一致性」——比如 satis 默认不拉取 dist 的 shasum,导致 composer install --prefer-dist 校验失败;又比如 packagist-mirror 不同步 provider-includes 分片,大项目首次 composer update 会超时。这些细节不会报错,只会让依赖安装变慢、偶尔失败,排查起来要翻 Composer 的 verbose 日志和镜像目录结构。










