socket_bind():unable to bind address
绑定socket 公网ip时报错PHP Warning: socket_bind(): unable to bind address [99]: Cannot assign requested address in /var/www/html/tcp.php on line 8
环境:
本地 win10 + php7.1nts + nginx1.2
阿里云 CentOS7.6 + php7.1nts + nginx1.2
在本地测试 socket 时,服务端设置IP地址:127.0.0.1,客户端IP是:127.0.0.1 是正常运行的;放到公网服务器后,服务端、客户端IP地址都改为了公网IP地址,结果一直报错:PHP Warning: socket_bind(): unable to bind address ;此问题引起错误原因大概是:
1、端口被占用了
2、端口处于TIME_WAIT状态
3、IP写错了
端口号是已经加入到了安全组,但还是不可用。
解决方法:
在阿里云上的 ECS 实例是有两个IP地址的,一个是公网地址,一个是内网地址,将服务端的IP地址填写阿里云给的内网地址,客户端IP地址填写阿里云给的公网地址,再次测试可以正常运行了。