应使用 composer require php-amqplib/php-amqplib,这是 RabbitMQ 官方推荐的纯 PHP 客户端,基于 AMQP 0.9.1 协议,兼容 3.8+ 至 4.x 版本;不存在 rabbitmq/rabbitmq 包,ext-amqp 需编译且不推荐新手。

直接用 composer require php-amqplib/php-amqplib 就行,这是 RabbitMQ 官方推荐的 PHP SDK,无需额外配置扩展或编译 C 库。
为什么不是 composer require rabbitmq/rabbitmq?
不存在官方维护的 rabbitmq/rabbitmq 包。社区广泛使用且 RabbitMQ 文档明确列出的 PHP 客户端只有 php-amqplib/php-amqplib —— 它是纯 PHP 实现,基于 AMQP 0.9.1 协议,兼容所有主流 RabbitMQ 版本(3.8+ 到 4.x)。
- 别搜 “RabbitMQ 官方 SDK”,官网只列了
php-amqplib为 PHP 推荐客户端 -
ext-amqp是 PECL 扩展,需编译安装、依赖librabbitmq,和 Composer 无关,也不推荐新手用 - 某些博客写的
videlalvaro/php-amqplib是旧包名,已迁移至php-amqplib/php-amqplib,Composer 会自动重定向,但建议直接写新包名
安装时常见报错及应对
执行 composer require php-amqplib/php-amqplib 后若失败,大概率是 PHP 版本或依赖冲突问题:
-
Your requirements could not be resolved:检查当前项目是否锁定了过老的php版本(该 SDK 要求 PHP >= 7.2,v3.x 要求 >= 8.0) -
Failed to download php-amqplib/php-amqplib:确认网络能访问 packagist.org(国内可临时加-vvv看具体卡在哪,或换镜像:composer config -g repo.packagist composer https://packagist.phpcomposer.com) - 安装后
class not found:确保已执行composer dump-autoload(通常 require 后自动执行,但某些 CI 环境需手动补)
引入后怎么验证能用?
写个最小连接测试脚本,不依赖框架,直连本地 RabbitMQ(默认 guest/guest 用户,5672 端口):
立即学习“PHP免费学习笔记(深入)”;
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
try {
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
echo "Connected to RabbitMQ\n";
$channel->close();
$connection->close();
} catch (Exception $e) {
echo "Connection failed: " . $e->getMessage() . "\n";
}
运行前确保 RabbitMQ 服务已启动(systemctl status rabbitmq-server 或 docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management)。如果报 Connection refused,问题不在 Composer,而在服务未就绪或凭据不对。
真正容易被忽略的是:SDK 本身不启动任何服务,它只是发请求的“客户端”。装完依赖 ≠ RabbitMQ 就跑起来了——环境、权限、网络策略(比如 Docker 容器间通信)、vhost 配置,这些才是后续连不上时最常卡住的地方。











