[freetds] PHP 5.2.6 + pdo_dblib + FreeTDS 0.64 -- tds_open_socket: Unknown error: 0

James K. Lowden jklowden at freetds.org
Thu Jul 24 14:23:12 EDT 2008

Kian Mohageri wrote:
> 19:27:18.240697 12864 (net.c:210):Connecting to port
> 2638 (TDS version 5.0)
> 19:27:18.240926 12864 (net.c:264):tds_open_socket: connect(2) returned
> "Unknown error: 0"

I can tell you what's happening, but not why.  I suspect it's some kind of
local network setup problem, perhaps a firewall or permissions.  

Here's the relevant code from src/tds/net.c:

	retval = connect(tds->s, 
			(struct sockaddr *) &sin, 
	if (retval == 0) {
			"connection established\n");
	} else {
			"tds_open_socket: connect(2) returned \"%s\"\n", 		


connect(2) may return only 0 or -1, and should set errno.  It appears to
be returning nonzero, but not setting errno.  (sock_errno is just errno
except on Win32.)  That is, it reports failure but not why.  

The only conclusion I can draw is that your FreeTDS configuration is
correct, but something is amiss with your network setup that prevents your
PHP application from forming the connection.  Moreover, IMO you have a
FreeBSD bug, because a non-zero return code from connect(2) must be
accompanied by a valid errno value.  

HTH.	:-/


More information about the FreeTDS mailing list