首先,我可以看到已经解决了问题。无法运行套接字服务器
PHP web socket unable to bind socket
Issue in setting the socket server
socket_bind(): unable to bind address [99] (Ubuntu on Amazon EC2)
和许多其他资源,他们都表示,问题是在使用的端口或外部IP, 等
,但我不能克服它。 我的服务器在CentOS 6.3上运行并使用CPanel(它是惠普服务器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() :无法 地址[98]结合:地址已在使用中 /home/myapp/public_html/websocket/server.php线60上
2 /。奇怪的是,当我检查其使用
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
端口835有趣的事情发生了:
然后我跑我的终端命令shell
php /home/myapp/public_html/websocket/server.php
的的server.php错误已经消失,而不是它是
服务器入门:2013-08-16 03:19:54
主套接字:资源ID#4
上侦听:127.0.0.1端口835
我认为它开始工作,但实际上却没有,因为当我用浏览器打开server.php
URL
http://mysite/server.php
的错误是 “权限denined”
娃rning:socket_bind()[函数。插座绑定]:无法绑定地址 [13]:权限被拒绝在 /home/myapp/public_html/websocket/server.php上线60 socket_bind()失败
编辑:关于允许,我可以用server.php打开同级目录下的client.html,没有问题。 文件夹代码权限为755,且用户不是root用户。 我所有的命令是在root权限执行
任何帮助是极大的赞赏:(
这听起来像一个权限问题。运行httpd的用户是哪个用户,以及从命令行运行的用户是什么? –
我有两个用户:root和myuser,文件夹所有者当前是myuser。我可以在server.php完全相同的目录下运行client.html,我认为这不是原因 –
我的建议是,当你从命令行运行它时,因为进程正在以你的权限运行,有权访问它需要执行的某个资源/文件,而您的网络服务器(httpd)正在运行的用户无法访问故障。我不能专门把我的手指放在那个文件/资源上。 –