socket_bind():unable to bind address
环境:
本地 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地址填写阿里云给的公网地址,再次测试可以正常运行了。
参考:
https://segmentfault.com/q/1010000004403165/a-1020000004403605
https://www.php.cn/php-weizijiaocheng-101104.html