2011-08-27 179 views
0

我已经在这几天了,只是不能解决问题。我也把它放在Ubuntu论坛上,什么都没听到。基本上,我有一个本地套接字中,我在一个PHP成功创建的/ tmp/mysockets script--无法连接到本地套接字,连接被拒绝

if (($sock = socket_create(AF_UNIX, SOCK_STREAM,0)) === false) 
{ 
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; 
     exit(); 
} 

但我无法连接,通过

if (socket_connect($sock, $sock_str) === false) 
{ 
     echo "socket_connect() on " . $sock_str . " failed: reason: " . socket_strerror(socket_last_$ 
     socket_close($sock); 
     exit(); 
} 

这给了我

警告:socket_connect():无法连接[111]:连接被拒绝 in line 66上的/var/www/myscript.php socket_connect() /tmp/mysockets/sock失败:原因:连接被拒绝

现在,我认为这可能是一个权限问题,但我已经将/ tmp,mysockets和sock chmod 777,并没有关系。可能是什么问题呢?

+0

你叫'socket_listen()'? – stewe

+0

@stewe脚本在socket_bind()上已经失败,参见下文 –

+2

如果有的话,什么都在监听套接字?您无法连接到无人监听连接的套接字。 – duskwuff

回答

0

所以,事实证明,应该听这个套接字的进程崩溃了 - 我正在远程做这个(我只是习惯远程编译/调试),所以我没有看到这首先。对不起,我们错误地描述了这个问题。 @duskwuff你有正确的想法。

1

您需要在socket_create()之后使用socket_bind()socket_listen()

+0

谢谢我试过socketbind($ sock,'127.0.0.1')并得到'无法绑定,权限被拒绝',所以这是进步,但我喜欢我说的一切都是777.这是什么意思? –

+0

如果您尝试绑定到低编号的端口,则需要成为root用户。 –

+0

@Michael get_current_user()返回'root'。 –

相关问题