2014-02-17 60 views
4

OS:CentOS的6.4
我试图使用PHP客户端如下连接到服务器RabitMQ,PHP客户端无法连接到服务器的RabbitMQ在localhost

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

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

netstat的说明这一点,
TCP 0 0 ::: 5672 ::: * LISTEN 10776 /梁

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

我在此先感谢您的帮助。

回答

1

如果你

telnet 10.1.150.109 5672 
+0

感谢你的时间,但它说:通过连接外部主机关闭。这是一个Web服务器(Apache)的权限问题,就好像我在命令行中运行PHP脚本一样,它通过将消息推送到服务器完美工作。 (php /var/www/html/event/send.php [x]发送'Hello World!') – Tharanga

+0

好的,显然你可以连接到服务器,这个人在你链接的帖子上说:“问题是固定的重新配置监听地址表格0.0.0.0:5672到127.0.0.1:5672以及OS中的小安全修复程序。“ – sathia

+0

我正在深入挖掘服务器,并通过禁用selinux($ echo 0>/selinux/enforce)来解决问题。再次感谢您的时间。 – Tharanga

6

因为我不喜欢接受的答案会发生什么,这里有一个我觉得比较好。

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

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

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

我想“重新配置监听地址从0.0.0.0到127.0.0.1”是对hostname参数的引用,在我的情况下,它被设置为“localhost”而不是明确的IP地址。 (可以肯定的0.0.0.0是要失败的!)

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

相关问题