无法运行套接字服务器


Could not run socket server

首先,我可以看到已经解决了围绕这个问题的问题。

PHP web套接字无法绑定套接字

设置套接字服务器时出现问题

socket_bind():无法绑定地址[99](亚马逊EC2上的Ubuntu)

以及许多其他资源,他们都说问题出在使用的端口或外部IP中,等

但我无法释怀。我的服务器运行在CentOS 6.3上,使用CPanel(它是HP服务器https://www.hpcloud.com/)。

我得到的web套接字演示源代码在https://code.google.com/p/phpwebsocket/

我的设置是

$master  = WebSocket("127.0.0.1",4444); // even I tried with localhost, they worked same

以下是我尝试的步骤和相应的错误:

1/。我尝试了以下命令,以确保我使用的端口可以使用

$ lsof|grep 4444
$ netstat -a -p -n

但是我总是得到错误,尽管这个端口4444是免费的

警告:socket_bind():无法绑定address[98]:地址已在中使用/home/myapp/public_html/websocket/server.php,第60行

2/。奇怪的是,当我检查使用的835端口时

 crond      1621      root  DEL       REG              252,1               39835 /lib64/libpam.so.0.82.2.#prelink#.B1eyGx
atd        1633      root  DEL       REG              252,1               39835 /lib64/libpam.so.0.82.2.#prelink#.B1eyGx 

有趣的事情发生了:

然后我在我的终端命令shell 上运行server.php

 php /home/myapp/public_html/websocket/server.php

错误已经消失,而不是

服务器启动时间:2013-08-16 03:19:54

主套接字:资源id#4

侦听:127.0.0.1端口835

我以为它开始工作了,但实际上没有,因为当我用URL 浏览器打开server.php

http://mysite/server.php

错误为"拒绝权限"

警告:socket_bind()[function.socket bind]:无法绑定地址[13] :中的权限被拒绝/第60行的home/myapp/public_html/websocket/server.phpsocket_bind()失败

编辑:关于权限,我可以用server.php在同一级别的目录中打开client.html,没有问题。文件夹代码权限为755,用户不是root用户。我的所有命令都是在根权限下实现的

非常感谢您的帮助:(

我认为问题在于您正试图在Web浏览器中加载Websocket服务器。最有可能的是,apache用户的安全设置不允许您的服务器侦听不常见的端口。

在默认情况下,CentOS通常附带启用SELinux的功能。CentosLinux针对Apache的部分安全策略是,默认情况下,Apache只允许服务访问与HTTP相关的已识别端口(即端口80、8080等)。

启用SELinux后,您可以通过使用"semanage"命令在SELinux内部添加一条规则来允许Apache侦听tcp端口4444:

~$ semanage port -a -t http_port_t -p tcp 4444