|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #15813 >3 step communications
Submitted: 2002-03-01 11:21 UTC Modified: 2002-07-01 17:37 UTC
Avg. Score:4.6 ± 0.7
Reproduced:5 of 5 (100.0%)
Same Version:4 (80.0%)
Same OS:2 (40.0%)
From: karl at crantorland dot com Assigned:
Status: Not a bug Package: Sockets related
PHP Version: 4.1.1 OS: windows nt 4.0
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
From: karl at crantorland dot com
New email:
PHP Version: OS:


 [2002-03-01 11:21 UTC] karl at crantorland dot com
PHP is unrelyable in telling when data has arrived on a socket.  socket_get_status() once the feof has resulted in true will never reset even when data has arrived.  I have done extensive testing.  I connect to an smtp server so i know the server side is working.  this is what is suppose to happen:

1)client connects
2)server accepts and sends 220 ready reponse
3)client recieves 220 and sends EHLO to server
4)server recives EHLO and sends back 250 reponse along with supported options
5)client recives 250 reponse(smtp goes on with more stuff but this is the point where my script would disconnect)

i use a while(!feof($socket)) loop to get all the data off the port.  the first one works and then after that no matter what data arrives feof($socket) is always true.

socket_get_status($socket) confirms that php thinks no more has arrived but when i look at the server i can see that data has been sent.

This was all done under 4.1.0.  i upgraded to 4.1.1 and now nothing works at all.

testing code is here.  feel free to connect to the server and port specified for testing.

If i am wrong about this and someone has a script that proves me wrong please email it to me and disregard this post.


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2002-03-01 11:24 UTC] exonic at signuts dot net
I experience the same problem. I'm using PHP4.1.2
 [2002-07-01 17:37 UTC]
Thank you for taking the time to report a problem with PHP.
Unfortunately your version of PHP is too old -- the problem
might already be fixed. Please download a new PHP
version from

If you are able to reproduce the bug with one of the latest
versions of PHP, please change the PHP version on this bug report
to the version you tested and change the status back to "Open".
Again, thank you for your continued support of PHP.

 [2004-06-30 17:17 UTC] ggarber at searchtec dot com
Here's your problem and this works for me.
Took me a few days to figure this one out.
Right now I'm working on serial communications in php.
It seems it can be done but only with some effort.
(under windows nt, xp, 95, etc)
well here's the telnet code..
function telnet_get_til_input($socket=0)
$response = '';

if ($socket === 0) { return 0; }

$line = fgets($socket, 1024);
$response = $line;

while ((!feof($socket)) and (!($line === false)))
   $line = fgets($socket, 1024);
   if ($debugging) { echo $line; }
   $response .= $line;

return $response;
}; // end function telnet_get_til_input
you might also want to make sure you put this code to connect
function telnet_connect($server='',$port='23')
$socket = 0;
$socket = fsockopen($server, $port);
$response = telnet_get_til_input($socket);

return $socket;
}; // end function telnet_connect
and here's the disconnect code
function telnet_quit($socket)
return fclose($socket);
}; // end function telnet_quit
you might want to edit those a lot to have extra commands in them.. but they work good.
let's get some posts on com ports under windows and linux for php.. talk about limited..
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Mon May 16 09:05:48 2022 UTC