PHP客户端无法连接到localhost上的RabbitMQ服务器

时间:2014-02-17 12:18:49

标签: php rabbitmq

OS :CentOS 6.4
我正在尝试使用php客户端连接到RabitMQ服务器,如下所示,

$connection = new AMQPConnection('10.1.150.109', 5672, 'guest', 'guest');
$channel = $connection->channel();

但是当我从浏览器运行脚本时,它给了我这个,
异常'PhpAmqpLib \ Exception \ AMQPRuntimeException',在/var/www/html/event/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php中显示错误'连接到服务器错误(13):权限被拒绝': 27

netstat显示这个,
    tcp 0 0 ::: 5672 ::: * LISTEN 10776 / beam

在这篇文章中,这个人隐含地给出了答案Client can't connect to RabbitMQ server on localhost。但他没有描述他为解决这个问题所遵循的程序。

对于那些在这方面可以帮助我的人,我感谢你们。

2 个答案:

答案 0 :(得分:7)

由于我不喜欢接受的答案,我认为这是更好的答案。

禁用SELinux是一种破解。它可能有用,但它可能不是一个好主意。从问题(或它引用的其他问题)中可以立即看出的是PHP客户端如何运行。即从命令行或通过浏览器。

SELinux默认不允许httpd(即apache)连接到端口5672。

在我的情况下,从命令行运行php脚本工作 - 接受连接。但是,由于此SELinux策略,从浏览器运行它会失败。

我想"将监听地址从0.0.0.0重新配置为127.0.0.1"是对hostname参数的引用,在我的例子中,该参数设置为" localhost"而不是一个明确的IP地址。 (肯定0.0.0.0会失败!)

您可以启用httpd访问SELinux中的端口5672:https://serverfault.com/questions/563872/selinux-allow-httpd-to-connect-to-a-specific-port

答案 1 :(得分:-1)

如果你

会发生什么
 telnet 10.1.150.109 5672