I'm now using stomp to connect with ActiveMQ based on a PHP site running on apache server. The Stomp can run in bash but can't run in apache.
I install stomp by
pecl install stomp
and modify the php.ini with
extension=stomp.so
I have a 'index.php' like this:
<?php
echo 'runing-';
/* connection */
try {
$stomp = new Stomp('tcp://localhost:61613');
echo 'connecting-';
} catch(StompException $e) {
die('Error! Connection failed: ' . $e->getMessage());
}
$stomp->send('/queue/test', 'Hello from PHP');
echo 'finished.';
/* close connection */
unset($stomp);
?>
Firstly, I run with
$ php index.php
And it echo as my expectation:
$ php index.php
runing-connecting-finished.
Then I open it in browser:
http://localhost/index.php
It reports
runing-Error! Connection failed: Unable to connect to localhost:61613
I've searching resolution for this error all day... I guess apache block the request from stomp since it runs successfully in bash.
What should I do to fix this bug?
Thanks really.
an experienced colleague called Justin get things done! Though not really understand this situation, I post my solution here:
Firstly, I run sestatus:
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
Justin told me to change settings in /etc/sysconfig/selinux to
SELINUX=permissive
Then I restart and run sestatus again:
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: permissive
Policy version: 24
Policy from config file: targeted
Finally things work!
Linux stuff still seems a little magical for me. Who knows something about this please give an explanation about this.
Thanks a lot.