-
October 30th, 2014, 06:00 AM
#1
Issue connecting PHP server class to local socket
Hi All,
I have a Ubuntu 14 with apache2 web server and are trying to write a web service that connects to a local TCP socket (this is the only method to interface to this particular daemon running).
I have checked and selinux is disabled by default in ubuntu and have verified the port is available on 127.0.0.1 and have also done a simple telnet check that it accepts connections within the machine. However I can't get my PHP code as the TCP client to connect to the TCP Server, it keeps saying connection refused. The class with the connection method is as follows:
PHP Code:
<?php
class CABHCmdInt
{
// Socket Variables
private $m_Port;
private $m_Socket;
private $m_Created;
private $m_Connected;
// State Variables
private $m_SessionKey;
function _construct($pPort)
{
$this->m_Port = $pPort; // Needs to be a string
$this->m_Created = false;
$this->m_Connected = false;
$this->m_SessionKey = ""; // Empty string indicates no session established
}
function _destruct()
{
if ($this->m_Connected == true)
socket_close($this->m_Socket);
}
public function connectCommandInterface ()
{
// This will start the command interface to the local port
// NOTE: It does not set-up a session (key exchange) only does the
// TCP Connect part.
if ($this->m_Created == false)
{
$this->m_Socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)
if ($this->m_Socket === false)
return false;
$this->m_Created = true;
}
if ($this->m_Connected == false)
{
// We only ever to a local server for this project
$time = time();
while (!@socket_connect($this->m_Socket, "127.0.0.1", $this->m_Port))
{
$err = socket_last_error($this->m_Socket);
if ($err == 115 || $err == 114)
{
if ((time() - $time) >= $timeout)
{
socket_close($this->m_Socket);
// Connection Timeout
error_log("ABH Command Interface connection timeout", 0);
return false;
}
sleep(1);
continue;
}
$reason = socket_strerror($err);
error_log("ABH Connect Command Interface error on connect, reason " . $reason, 0);
return false;
}
$m_Connected = true;
}
if ($this->m_Connected && $this->m_Created)
return true;
else
return false;
} // End of connect function
}
?>
I have searched the internet high and low but all I can find is talk about selinux which should not be a problem if it is disabled.
The apache error log shows the message from the error log line as :
[Wed Oct 29 21:51:26.644788 2014] [:error] [pid 1630] [client 127.0.0.1:36954] ABH Connect Command Interface error on connect, reason Connection refused, referer: http://127.0.0.1/api/CITesting.php
Any ideas on how I can get this to work or why a PHP class in apache is refused connection would be great.
Thanks in advance.
codeAutomationGuy
-
October 30th, 2014, 12:17 PM
#2
Re: Issue connecting PHP server class to local socket
Nothing wrong with the code. Did you modify ufw to allow connections via port 36954?
If the post was helpful...Rate it! Remember to use [code] or [php] tags.
-
October 31st, 2014, 06:33 AM
#3
Re: Issue connecting PHP server class to local socket
Thanks PeejAvery for the suggestion, running the command "sudo ufw status verbose" shows it as inactive and since a local telnet client works but what I realized is the calling function that constructed the class did not do it correctly and this was not the target port number. Solved now thanks for the suggestions, made me realise the error.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|