首先配置 Artifactory 创建本地、远程和虚拟 composer 仓库,然后在 composer.json 中指向虚拟仓库地址,接着通过 auth.json 配置认证信息,再使用 curl 或 Web 界面上传私有包,最后运行 composer clear-cache 和 install 验证依赖拉取是否生效。

在使用 Composer 管理 php 项目依赖时,可以通过配置 JFrog Artifactory 来作为私有或代理的 PHP 包仓库。Artifactory 支持 Composer 类型的远程、本地和虚拟仓库,可以用来缓存公共包(如 packagist.org)或托管私有 PHP 包。
1. 配置 Artifactory 中的 Composer 仓库
登录到 JFrog Artifactory 管理界面后,进行以下操作:
- 创建本地 Composer 仓库:用于存放私有 PHP 包。选择 Repositories → Add Repositories → Local,类型选择
Composer,例如命名为composer-local。 - 创建远程 Composer 仓库(可选):用于代理 packagist.org。选择 Remote Repository,类型为 Composer,URL 设置为
https://packagist.org,例如命名为composer-remote。 - 创建虚拟仓库(推荐):将本地和远程仓库聚合在一起。创建一个名为
composer-virtual的虚拟仓库,并将composer-local和composer-remote加入其中。
虚拟仓库对外提供统一入口,简化客户端配置。
2. 在项目中配置 composer 使用 Artifactory
修改项目的 composer.json 文件,添加 repositories 字段指向 Artifactory 的虚拟仓库地址:
立即学习“PHP免费学习笔记(深入)”;
{ "repositories": [ { "type": "composer", "url": "https://your-artifactory-domain.com/artifactory/composer-virtual" } ], "require": { "monolog/monolog": "^2.0", "your-company/private-package": "^1.0" } }
替换 URL 中的域名为你实际的 Artifactory 地址。
如果你仍需要保留 Packagist 官方源,可以显式添加回来:
"repositories": [ { "type": "composer", "url": "https://your-artifactory-domain.com/artifactory/composer-virtual" }, { "packagist.org": false } // 禁用默认镜像 ]
3. 认证私有仓库(如需访问私有包)
如果 Artifactory 上的仓库受权限控制,需配置认证信息。可通过 auth.json 文件管理凭证:
在项目根目录或 COMPOSER_HOME 目录下创建 auth.json:
{ "http-basic": { "your-artifactory-domain.com": { "username": "your-username", "password": "your-api-key-or-password" } } }
也可以使用 Artifactory 提供的 API Key 或 access Token 作为密码。
4. 发布私有包到 Artifactory
要将私有 PHP 包上传到 composer-local 仓库,可通过 Artifactory Web 界面或命令行工具完成。
使用 curl 示例上传:
curl -uusername:password -X PUT "https://your-artifactory-domain.com/artifactory/composer-local/vendor/name/1.0.0.zip" -T path/to/package.zip
同时确保包的 composer.json 正确声明了名称和版本,并被 Artifactory 解析索引。
Artifactory 会自动维护 packages.json 等元数据文件,供 Composer 下载时读取。
5. 验证配置是否生效
运行以下命令测试是否能从 Artifactory 拉取依赖:
composer clear-cache composer install --verbose
查看输出中是否从你的 Artifactory 地址下载包。若成功,则说明集成正常。
基本上就这些。通过以上步骤,你就可以在团队或企业环境中统一管理 PHP 包,提升安全性和构建效率。


