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

Tha*_*nga 5 php rabbitmq

操作系统:CentOS 6.4
我试图使用php客户端连接到RabitMQ服务器,如下所示,

$connection = new AMQPConnection('10.1.150.109', 5672, 'guest', 'guest');
$channel = $connection->channel();
Run Code Online (Sandbox Code Playgroud)

但是当我从浏览器运行脚本时,它给了我这个
例外'PhpAmqpLib\Exception\AMQPRuntimeException',并在/ var/www/html/event/vendor/videlalvaro中显示消息'Error Connecting to server(13):Permission denied' /php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php:27

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

在这篇文章中,这个人隐含地给出了答案,客户端无法连接到localhost上的RabbitMQ服务器.但他没有描述他为解决这个问题所遵循的程序.

对于能够在这方面帮助我的人,我感谢你们.

geo*_*sic 5

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

禁用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


sat*_*hia -2

如果你会发生什么

 telnet 10.1.150.109 5672
Run Code Online (Sandbox Code Playgroud)

  • 我不明白一个问题如何被接受为答案。我也遇到了同样的问题,这让我不知道解决方案。刚刚注意到写这个问题的人所抱怨的正是我所抱怨的——没有对问题的实际答案……但他接受了一个不能回答问题的解决方案。哦亲爱的。 (2认同)