Search code examples
phpapachestompselinux

Why stomp can't run in apache?


  • Brief Intro

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.

  • Preparation

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);
?>
  • Start Working

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
  • Question

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.


Solution

  • 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.